• 原创 vxWorks系统中vxbus机制总结

    先介绍一下vxWorks的设备以及驱动的表示方法,以及总的关系:设备和驱动根本都抽象成一个结构体,设备结构体中包含了设备名字、ID号、功能函数指针等必备的信息,驱动结构体包含了初始化函数、名字、ID等信息。总的如图看一下重要的几个结构体的关系:vxbus结构设计了几个链表:/*放置驱动的链表*/struct vxbDevRegInfo * pDriverListHead = NUL

    2017-05-15 11:41:15  3204  1

  • 原创 把中断路由到对应的cpu上

    当cpu使能后(使能时就会进行初始化),就可以正行运行了,当然也包括处理中断,但是这个时候,中断还没有路由到对应的cpu上。这里呢就分析一下中断是怎么路由到它自己对应的cpu上的。看一下函数调用:usrRoot-->usrSmpInit-->usrEnableCpu-->usrSmpCpuEnableHook-->vxbIntToCpuRoute-->vxbDevMethodR

    2017-08-08 06:58:17  1061  0

  • 原创 多核初始化过程

    平台介绍:loongson3A-4核cpu(mips架构),vxWorks6.8多核cpu启动时,刚开始时是cpu0在运行,后面才会初始化其他三个核,这里就说一些其他三个核的初始化过程。函数调用关系:usrRoot-->usrSmpInit-->usrEnableCpu-->kernelCpuEnableInternal-->vxCpuStateInitkernel

    2017-08-08 07:20:43  2388  0

  • 原创 总结一下vxWorks中系统时钟是怎么修改延迟任务的时间片的

    函数调用关系:(延时任务的clock减少的函数调用)usrClock-->tickAnnounce-->windTickAnnounce-->Q_ADVANCEN先说一下等待任务的时间片减少。系统中有一个全局队列定义如下,就是专门存放等待任务的。Q_HEAD tickQHead;tickQHead队列的结构体定义:typedef struct { Q_N

    2017-08-01 17:13:10  1076  0

  • 原创 vxWorks对于当前(正在运行)任务时间片操作小结

    那前面说了延时任务的时间片的操作,现在当前得说说运行任务的时间片操作拉,这样才完整嘛。时钟中断函数对运行任务时间片的操作在函数的最后面:void windTickAnnounce (void){ .... Q_ADVANCEN (&tickQHead, 1); .... if (_func_windTickAnnounceHook != NULL) {

    2017-08-01 19:41:38  1844  0

  • 原创 多核的idleTask的设定及其功能

    平台介绍:loongson3A-4核cpu,vxWorks6.8在多核使能后,核就自动加载了idleTask的内容,这个idleTask时什么时候设置好的呢?idleTask任务的内容是什么呢?一,设置时机函数调用关系usrInit--->usrKernelInit--->kernelInit_WRS_FUNC_NORETURN void kernelInit

    2017-08-10 10:39:27  453  0

  • 原创 vxWorks中就绪队列小结

    之前说过了tick队列,现在说一下就绪队列。就绪队列也是一个全局队列,在多核的系统中,系统为每一个核都设置了一个就绪队列:在usrSmp.c文进中为每个cpu核都定义了自己的readQueueQ_HEAD _WRS_DATA_ALIGN_BYTES(16) readyQSmpHead [VX_SMP_NUM_CPUS];BMAP_LIST _WRS_DATA_A

    2017-08-03 11:35:35  403  0

  • 原创 vxWorks中的logMsg机制的实现

    vxWorks中打印时可以使用log_msg来进行打印,当然了这是系统启动后才可以使用的。这其实就是定义了一个全局的信息队列,当调用log_msg时,信息就写入到这个队列中,然后相关的信息就会被打印出来。先看一下这个队列被实现的函数调用:usrRoot-->logInitSTATUS logInit ( int fd, /*信息被

    2017-08-10 14:09:33  2371  0

  • 原创 vxWorks中系统任务tIsr的实现及使用

    tIsr作为一个系统任务,看其注释,知道其有两种使用方式:This module operates in two distinct modes depending on the module'sconfiguration.  If the mode is configured for "per-CPU" deferraltasks, this module creates (as ne

    2017-08-10 15:17:33  652  0

  • 原创 系统函数tExcTask的实现及使用

    tExcTask函数的作用:This library provides a facility for interrupt service routines to defer workthat should be performed at task level. This library sets up an exception taskwhich executes jobs queue

    2017-08-10 15:47:28  625  0

  • 原创 vxWorks系统任务tJobTask的实现及使用

    前面说了tIsr以及tExcTask函数,这两个任务都是关于中断的,这里说的tJobTask是正常任务,跟中断没有关系。实现的就是简单的把一个函数延后执行。/*记录job的结构体*/typedef struct { FUNCPTR func; /* job function */ int arg [JOB_MAX_ARGS];

    2017-08-10 17:51:51  1098  0

  • 原创 vxWorks中延后执行任务队列(workQ)

    在多核系统中为每一个cpu设置了一个如下的结构体,分别记录了当前核的运行的任务ID,延后执行任务队列,延后任务队列是否为空等重要信息。#define VX_MAX_SMP_CPUS 4WIND_VARS _WRS_VX_KERNEL_VARS_SECTION_ATTR vxKernelVars[VX_MAX_SMP_CPUS];typedef struct _windVars

    2017-08-03 15:54:49  709  0

  • 原创 vxWorks中的多核间的通信

    平台介绍:loongson3a-4核cpu,vxWorks6.8环境一,核间通信的控制器驱动核间通信是通过中断来进行实现的。系统中定义了两个全局变量,是用来管理核间通信的,看看他们作用具体是什么?_WRS_DATA_ALIGN_BYTES(32) INT_CTLR vxbSbIntCtlr[VX_MAX_SMP_CPUS];typedef struct sb1Int

    2017-08-06 13:31:15  2055  0

  • 原创 vxWorks中的中断的两条线路

    为什么起一个这样的题目呢?就是说明一下中断一硬一软两个路线:1,硬件上中断来了之后怎么再cpu上表现出来呢?2,软件上cpu分发中断时怎么判别出来是什么中断呢?并调用相关的处理函数这里呢就还是借用loongson3a+2h开发板来说一下。这个板子是用loongson3A-4核处理器作为cpu,loongson2H-单核处理器作为桥片来处理网卡,usb,vga,LPC,sat

    2017-08-06 14:06:10  529  0

  • 原创 vxWorks中基于mips架构当中断了后执行的第一个指令是什么?

    在基于mips架构的vxworks中,中断来了之后执行的第一个指令再那里?一,初始化关于中断以及tlb异常函数存储再palDesc中,当然了其地址也再其中。MIPS_PAL_DESC palDesc = { "unknown" };相关的结构体设置:typedef struct { char *version; /* PAL version string

    2017-08-06 14:32:34  224  0

  • 原创 vxWorks中对于系统内存的分配

    vxWorks中对于系统内存的分配。在mips架构上,也就是对c0000000以上地址的分配:1,没有rpt任务支持时:2,有rpt任务支持时:

    2017-08-15 14:36:02  790  0

  • 转载 vxWorks内核解读七--IO操作

    为了实现应用层程序的平台无关性,操作系统为应用层提供了一套标准的接口函数,这些接口函数在所有的平台上都保持一致,只是随着平台的变化,底层驱动或接近驱动部分操作系统中间层可能会随着调整。这样可以使用户程序独立于具体的硬件平台,增加了应用层开发的效率,避免了重复编码。通用操作系统GPOS(General Purpose Operating System)比如Unix,Linux,将这套提供给应用层的标

    2017-05-16 11:02:55  582  0

  • 转载 vxWorks内核解读六--初始化

    本篇文章分析VxWorks的初始化,VxWorks的初始化可以分成两个部分:1.具体处理器平台相关的硬件初始化:包括CPU内部寄存器、堆栈寄存器的初始化,外设初始化;2.VxWorks内核初始化:包括核心数据结构的初始化、初始任务的创建,启动多任务等等。我以Pentium平台为例,来分析VxWorks的初始化过程。6.1 处理器平台相关的初始化这部分代码初始化CPU内部寄存器,

    2017-05-16 11:02:08  681  0

  • 原创 vxWorks系统中多核cpu的使能

    平台介绍:vxWorks6.7,CPU为loongson3A1000(4核)基本过程就是首先0号cpu初始化(这段代码还没分析),之后就是0号cpu对1,2,3号CPU进行初始化。这里主要记录下对0号之外的cpu的初始化。 函数调用:usrRoot usrSmpInit kernelCpuEnableInternal vxCpuStateInit sy

    2017-05-15 17:01:37  1890  0

  • 原创 vxWorks系统shell命令记录(持续)

    这里记录下vxWorks系统使用期间使用的命令,方便以后调试查看:devs :列出设备mkdir :创建文件夹rm :删除文件夹

    2017-05-10 15:04:01  2095  0

  • 原创 mips架构窗口设置代码(loongson3A)

    这时基于loongson3A 64位CPU平台的分析:/**这时初始化xbar的代码,其中说明一下关键地址*win0地址为* 0x9000-0000-03ff0-2000到0x9000-0000-3ff0-20b8*win1地址为* 0x9000-0000-03ff0-2100到0x9000-0000-3ff0-21b8*win2地址为* 0x9000-0000-03ff0-22

    2017-06-16 15:22:28  376  0

  • 原创 vxWorks中关于cdfs文件的使用

    1,    对去驱动components的宏:DRV_drviertype_drivernameDRV_SIO_NS16550componment  INCLUDE_name{        NAME        SYNOPSIS        LINK_SYMS        MODULES        ARCHIVE        INIT_RT

    2017-05-22 15:04:59  690  0

  • 原创 vxWorks系统中(MIPS架构)的中断分发分析

    这里单独分析中断分发函数,大部分是基于汇编,初始化过程在另一个博客单独分析。首先当中断来了之后硬件会自动跳转到函数:(这里进行了部分删减,方便进行查看过程。) .ent excNormVmVec .set noatFUNC_LABEL(excNormVmVec) .set noreorder#ifdef _WRS_MIPS_VR4131_ERRATA nop /* 延

    2017-06-06 20:22:47  684  0

  • 原创 vxworks中断初始化以及挂接分析

    这篇blog主要分为三部分:1,中断初始化2,vxbus架构中断的挂接3,非vxbus架构的中断的挂接1,中断的初始化函数调用:usrInit->sysStart->palInit->palDescInit()/*为了方便查看,这里对函数 进行了删减*palDescInit()函数对默认的中断函数进行了初始化*/void palDescI

    2017-06-07 11:22:29  3869  1

  • 原创 vxWorks中发现的diable和gnule编译器的一些区别

    在使用不同的编译器编译windml时发现两个编译器有一些不同点(编译内核时目前没有发现什么区别),说明如下:环境说明:平台3a2000_2h开发板,workbench6.8,编译windml第一点:在编译具有不同参数的同名函数时,diable会只是警告,gnu会报错。在3a2000_2h板子的BSP中有一个不同参数的同名函数定义如下:Gc300.c文

    2017-06-22 18:00:23  869  0

  • 原创 vxWorks系统ps2键盘,tty设备,vga设备的联系

    先总的说明一下数据通路:ps2KBD -> tty -> m6845 -> m6845WriteString  就写到vga设备上了。首先系统使用了LOCAL PC_CON_DEV ** ppConsoleList这样的一个指针来记录系统中的PC_CON_DEV设备。这里PC_CON_DEV泛指就是关于vga显示的设备。首先说一下m6845和vga的挂接:LOCAL voi

    2017-06-22 19:48:52  1275  0

  • 原创 基于loongson处理器ejtag工具使用记录(持续)

    下载好工具之后,根据cpu的不同在configs目录中查找对应的配置文件,并覆盖顶层目录中ejtag.cfg配置文件,不需要进行什么修改,运行命令ejtag-debug-usb就可以进行使用了 sample 0:采集cpu0的指令运行m1  addr:修修改内存的值

    2017-05-10 15:06:17  798  0

  • 原创 vxWorks设置tlb表项

    平台说明:vxWorks6.8环境,loongson3a-4核cpu(mips架构)首先说一下我对tlb的理解:tlb就是按照一定的结构(具体的存储的时的结构是什么样子,跟使用的具体平台相关,不同平台的方式可能就不太一样)存储虚拟地址到物理地址的转换的一段存储空间,这段空间设计在cpu里,并且通过cpu中cp0辅助寄存器来进行读写,其中有一点比较特殊的是当cpu选择地址时,对tlb中的内容

    2017-07-31 10:29:47  465  0

  • 转载 vxWorks内核解读五--内存管理

    本篇博文,我们该谈到Wind内核的内存管理模块了,嵌入式操作系统中, 内存的管理及分配占据着极为重要的位置, 因为在嵌入式系统中, 存储容量极为有限, 而且还受到体积、成本的限制, 更重要的是其对系统的性能、可靠性的要求极高, 所以深入剖析嵌入式操作系统的内存管理, 对其进行优化及有效管理, 具有十分重要的意义。在嵌入式系统开发中, 对内存的管理有很高的要求。概括地说, 它必须满足以下三点要求:

    2017-05-16 11:01:24  3958  0

  • 转载 vxWork内核解读三--调度器

    本篇文章分析Wind内核调度器的设计原理以及其工作流程,设计支持多任务RTOS的关键是设计调度器,Wind内核调度器的目标是保证优先级最高的就绪任务处于运行状态。为了达到这一目的,需要在Wind内核的调度点判断就绪队列中优先级最高的任务是否正在运行,如果不在运行,调度器就会让这个优先级最高的任务抢占正在运行任务的CPU。保证就绪队列中优先级最高的任务始终占据CPU是Wind内核可抢占的实质,其

    2017-05-16 10:58:52  1022  0

  • 转载 vxWorks内核解读二--内核结构

    本文讨论Wind内核的设计思想,正如前文所述,VxWorks的Wind内核采用可裁剪的微内核设计,具有多任务并发执行、可抢占的优先级调度、可选的时间片调度、任务间通信和同步机制、快速的上下文切换,低中断时延、快速的中断响应、支持中断嵌套、支持256个优先级、支持优先级继承、以及任务删除保护机制,Wind内核运行在特权模式,不使用陷阱指令和跳转表,所有的系统调用均采用函数调用的形式实现。Wind

    2017-05-16 10:54:59  489  0

  • 转载 vxWorks内核解读四--中断

    接下来我们讨论一下Wind内核的中断处理模块,中断是操作系统内核设计中非常重要的部分。由于周期性和非周期性任务的按时执行都离不开中断,并且大多数实时任务的调度都是由中断引发的,中断管理对于实时系统来说不仅重要而且要求更高。因此,实时系统要求操作系统具备迅速响应外部中断的能力。本篇我以x86平台的Pentium处理器为例,介绍Wind内核的中断处理框架,以及中断栈幁的设计。通过本篇的分析,我们可

    2017-05-16 11:00:07  2571  0

  • 转载 vxWorks内核解读一--实时内核概述

    前言:我曾经在做VxWorks培训期间跟身边的嵌入式工程师同行交流的时候,发现大家对嵌入式VxWorks系统的Wind内核不是特别了解,而网上对于VxWorks的Wind内核也没有系统性的解读与分析,因此我决定发表一系列的博文来系统性地解读Wind内核的设计思想。我选择的是VxWorks5.5系统的Wind 2.6版本内核(这个版本的代码网上都有分享O(∩_∩)O),在分析的过程中,大家有任何的疑

    2017-05-16 10:21:36  1201  1

  • 原创 移植系统时思路记录

    在移植vxWorks系统,或者linux时都可以进行参考。 系统移植后没有什么打印信息,也启动不正常,此时可以把所有的驱动模块去掉,只留下一个最简单的内核,之后在进行移植。设备少了,需要进行排错的模块也少了很多。 先记录下,以供参考。

    2017-05-10 15:11:44  194  0

vxworks 系统学习相关推荐

  1. Vxworks系统学习之一----任务

    1.任务队列 vxworks维护4个队列: tick队列 ready队列 active队列 pend队列 一,tick队列 当执行taskDelay时,任务会被延长一段时间执行,此时,任务就会被加入到 ...

  2. 零基础参加java培训的系统学习路线

    ​ 零基础想要学习java技术,那么最好的选择就是参加java培训,进行系统的学习,以下就是小编为大家整理的零基础参加java培训的系统学习路线,希望能够帮助到正在学习java技术的零基础同学. 零基 ...

  3. java学mybatis还用学jdbc吗,mybatis系统学习(二)——使用基础mybatis代替原始jdbc

    mybatis系统学习(二)--使用基础mybatis代替原始jdbc 前言 这一篇笔记的内容应当是建立在上一篇的基础之上,不论是使用的数据表,还是对应的实体类,都在上一篇有过说明. 有兴趣的或者对相 ...

  4. Redis 系统学习目录

    Redis 系统学习目录 1.redis是什么 2.redis的作者何许人也 3.谁在使用redis 4.学会安装redis 5.学会启动redis 6.使用redis客户端 7.redis数据结构 ...

  5. Dubbo -- 系统学习 笔记 -- 示例 -- 参数验证

    Dubbo -- 系统学习 笔记 -- 目录 示例 想完整的运行起来,请参见:快速启动,这里只列出各种场景的配置方式 参数验证 参数验证功能是基于JSR303实现的,用户只需标识JSR303标准的验证 ...

  6. 嵌入式VxWorks系统开发与应用

    免费下载地址: http://www.vxworks.club 本书详细介绍了当今流行的嵌入式操作系统VxWorks,首先概括VxWorks操作系统的基本知识,如任务管理.任务间通信机制.内存管理以及 ...

  7. java php mysql_系统学习javaweb13----MYSQL学习(使用PHP、SQL)1

    系统学习javaweb13----MYSQL学习(使用PHP.SQL.mysqladmin)1 (本随笔是自学笔记,我学习的教程来自"菜鸟教程|MYSQL教程",十分感谢!) 目录 ...

  8. python自学流程-Python系统学习流程图,教你一步步学习python

    对于刚开始接触Python的小伙伴来说,没有思路方法,不知道从何开始学习,把软件环境安装好后就不知所措了!接下来我给大家分享下多位大牛倾力打造的python系统学习流程,一个月才设计完的! Pytho ...

  9. .NET系统学习----Globalization Resources

    前言: 在学习如何使用.NET资源文件以及如何开发World-Ready程序之前,我们先通过一个例子来看看为什么要使用资源文件,以及使用它的好处. 假设要在程序中根据当前的Culutre来设置Form ...

最新文章

  1. 插入排序,希尔排序,堆排序
  2. Mycat实现垂直拆分与水平拆分
  3. ASP.NET MVC 学习1
  4. python实训项目-求一份Python的实验报告+源代码,项目内容不限
  5. JAVA设计模式详解(六)----------状态模式
  6. 【转】 vi常用操作
  7. #ifdef,#ifndef,#define,#endif解析(原)
  8. 数组 最大差值_数组两元素的最大差:从暴力到多线程
  9. leetcode —— 1079. 活字印刷
  10. java 魔数_Java 字节码结构解析
  11. 可输入可选择的input
  12. 游戏盾 > 产品简介 > 产品优势
  13. ISA2006之二---client
  14. dnf没有机器人引爆_DNF外挂横行,正义的铁锤胡乱锤,TP娘如此无能?
  15. 华硕固件Linux-arm,AC86UASUS固件交叉编译的问题
  16. Java基础—封装继承多态(详细)
  17. 相机测试软件,相机篇 软件检测其实意义不大_佳能数码相机_数码影像评测-中关村在线...
  18. WebRTC学习实现视频
  19. mysql5.7第一次登录修改root密码
  20. python 爬取知网url

热门文章

  1. shiro分布式session共享
  2. SpringSession实现分布式Session
  3. 最简单的细胞比计算机还复杂,人类的科技文明是否真的就是宇宙中的唯一,外星人有可能不存在...
  4. Echarts常用属性---附智能看板素材
  5. 胶片的效果那真当钢钢滴啊,柯达克罗姆胶卷的前生今世
  6. 入门pandas—字符串操作
  7. 排卵期女人会变得花心
  8. 技术分享|三相并网逆变器PQ控制算法控制解析
  9. 基于8051单片机实现电子时钟+数字秒表设计
  10. Spring——AOP学习(静态代理和动态代理模式)