
嵌入式软件开发学习
Auto笔记
本人从事汽车电子行业,主要负责底层驱动开发、上位机软件开发、应用层逻辑开发
包括:UDS、OSEK、SIMULINK、Bootloader、ISO14229、ISO15765.。。。
展开
-
数据结构——双向链表
什么是双向链表单链表有一个缺点,无法快速访问前驱结点,当查找到某一个元素时,如果想查找其前驱结点,需要再次从头遍历。因此,有人提出在结点中再添加一个指向前驱的指针,如此便构成了双向链表。 ...原创 2018-10-17 21:18:21 · 317 阅读 · 0 评论 -
uCOS-II 基础入门教程(八)
μC/OS-Ⅱ初始化在调用μC/OS-Ⅱ的任何其它服务之前,μC/OS-Ⅱ要求用户首先调用系统初始化函数OSIint()。OSIint()初始化μC/OS-Ⅱ所有的变量和数据结构(。OSInit()建立空闲任务idle task,这个任务总是处于就绪态的。空闲任务OSTaskIdle()的优先级总是设成最低,即OS_LOWEST_PRIO。如果统计任务允许OS_TASK_STAT_E...转载 2019-01-16 22:41:41 · 903 阅读 · 0 评论 -
uCOS-II 基础入门教程(十)
任务堆栈 每个任务都有自己的堆栈空间。堆栈必须声明为OS_STK类型,并且由连续的内存空间组成。用户可以静态分配堆栈空间(在编译的时候分配)也可以动态地分配堆栈空间(在运行的时候分配)。静态堆栈声明如程序,这两种声明应放置在函数的外面。 静态堆栈static OS_STK MyTaskStack[stack_size]; 用户可以用C编译器提供的malloc()...转载 2019-01-21 21:29:43 · 782 阅读 · 0 评论 -
uCOS-II 基础入门教程(七)
任务调度(Task Scheduling)μC/OS-Ⅱ总是运行进入就绪态任务中优先级最高的那一个。确定哪个任务优先级最高,下面该哪个任务运行了的工作是由调度器(Scheduler)完成的。任务级的调度是由函数OSSched()完成的。中断级的调度是由另一个函数OSIntExt()完成的,这个函数将在以后描述。OSSched()的代码如程序: void OSSched (vo...转载 2019-01-15 21:38:58 · 1156 阅读 · 0 评论 -
uCOS-II 基础入门教程(九)
建立任务,OSTaskCreate()想让µC/OS-Ⅱ管理用户的任务,用户必须要先建立任务。用户可以通过传递任务地址和其它参数到以下两个函数之一来建立任务:OSTaskCreate() 或 OSTaskCreateExt()。OSTaskCreate()与µC/OS是向下兼容的,OSTaskCreateExt()是OSTaskCreate()的扩展版本,提供了一些附加的功能。用两...转载 2019-01-20 20:47:58 · 1217 阅读 · 0 评论 -
uCOS-II 基础入门教程(六)
中断中断是一种硬件机制,用于通知CPU有个异步事件发生了。中断一旦被识别,CPU保存部分(或全部)现场(Context)即部分或全部寄存器的值,跳转到专门的子程序,称为中断服务子程序(ISR)。中断服务子程序做事件处理,处理完成后,程序回到:在前后台系统中,程序回到后台程序 对不可剥夺型内核而言,程序回到被中断了的任务 对可剥夺型内核而言,让进入就绪态的优先级最高的任务开始运行...转载 2019-01-14 21:10:07 · 1073 阅读 · 1 评论 -
uCOS-II 基础入门教程(五)
死锁(或抱死)(Deadlock (or Deadly Embrace))死锁也称作抱死,指两个任务无限期地互相等待对方控制着的资源。设任务T1正独享资源R1,任务T2在独享资源T2,而此时T1又要独享R2,T2也要独享R1,于是哪个任务都没法继续执行了,发生了死锁。最简单的防止发生死锁的方法是让每个任务都:先得到全部需要的资源再做下一步的工作 用同样的顺序去申请多个资源 释放资源时使...原创 2019-01-08 22:21:10 · 1282 阅读 · 0 评论 -
uCOS-II 基础入门教程(十二)
内存管理在ANSI C中可以用malloc()和free()两个函数动态地分配内存和释放内存。但是,在嵌入式实时操作系统中,多次这样做会把原来很大的一块连续内存区域,逐渐地分割成许多非常小而且彼此又不相邻的内存区域,也就是内存碎片。由于这些碎片的大量存在,使得程序到后来连非常小的内存也分配不到。由于内存管理算法的原因,malloc()和free()函数执行时间是不确定的。在µC/OS-I...转载 2019-01-23 22:03:29 · 953 阅读 · 0 评论 -
数据结构---抽象数据类型(二)
抽象数据类型(Abstract Data Type,ADT)是指一个数学模型以及定义在这个模型上的一组操作。抽象数据类型的定义仅仅取决于它的一组逻辑特性,而与它在计算机中的表示和实现无关。抽象数据类型有两个重要特征:数据抽象和数据封装抽象数据类型在定义时遵循一定的格式规范:ADT 抽象数据类型名{Data: 数据元素之间逻辑关系的定义;Operation:...转载 2018-11-04 21:26:15 · 1872 阅读 · 0 评论 -
数据结构 入门
什么是数据结构?数据结构是计算机存储、组织数据的方式,它是指相互之间存在一种或多种特定关系的数据元素的集合。数据结构的分类1、逻辑结构集合 数据元素都属于这个集合,但数据元素之间并没有什么关系。线性结构 元素具有一对一的关系。线性结构分为顺序存储和链式存储两种。顺序存储是由一段地址连续的空间来存储元素;链式存储是由分散的单元空间来存储元素,存储单元由指针相连接。...原创 2018-10-29 21:01:26 · 427 阅读 · 0 评论 -
uCOS-II 基础入门教程(十一)
任务之间的通讯与同步在µC/OS-II中,有多种方法可以保护任务之间的共享数据和提供任务之间的通讯。在前面的章节中,已经讲到了其中的两种:一是利用宏OS_ENTER_CRITICAL()和OS_EXIT_CRITICAL()来关闭中断和打开中断。当两个任务或者一个任务和一个中断服务子程序共享某些数据时。二是利用函数OSSchedLock()和OSSchekUnlock()对µC/OS...转载 2019-01-22 23:10:11 · 875 阅读 · 0 评论