摘要:自旋锁 + dis local cpu preemt + dis local cpu interrupt 在linux/spinlock.h中定义了spinlock操作的API。 spinlock的思想就是在SMP环境中,保护共享的数据结构;也就是CPU-A正在访问(读写)共享数据的期间,其他CPU
阅读全文
摘要:FreeRTOS任务代码中临界段的进入和退出主要是通过操作寄存器basepri实现的。进入临界段前操作寄存器basepri关闭了所有小于等于宏定义configLIBRARY_MAX_SYSCALL_INTERRUPT_PRIORITY所定义的中断优先级,这样临界段代码就不会被中断干扰到,而且实现任务
阅读全文
摘要:PendSV是可悬起异常,如果我们把它配置最低优先级,那么如果同时有多个异常被触发,它会在其他异常执行完毕后再执行,而且任何异常都可以中断它。更详细的内容在《Cortex-M3 权威指南》里有介绍,下面我摘抄了一段。 OS 可以利用它“缓期执行”一个异常——直到其它重要的任务完成后才执行动 作。悬起
阅读全文
摘要:宏定义的形式如下: #define 名字 替换文本 这是一种最简单的宏替换 —— 后续所有出现名字记号的地方都将被替换为 替换文本 。 #define 指令中的名字与变量名的命名方式相同,替换文本可以是任意字符串。通常情况下, #define 指令占一行,替换文本是 #define 指令行尾部的所有
阅读全文
摘要:tos_knl_irq_enter和tos_knl_irq_leave __API__ void tos_knl_irq_enter(void) { if (!tos_knl_is_running()) { return; } if (unlikely(k_irq_nest_cnt >= K_NES
阅读全文
摘要:1、修改项目名称 在项目的Settings->General->Advanced settings中,有Rename repository的操作,如下图所示把项目名称和路径中的名称同时修改。 2、修改本地仓库 对于本地已经克隆下来的仓库,修改步骤如下:1. 运行git remote查看远程仓库名称,
阅读全文
摘要:中断寄存器 1)ISER[8](Interrupt Set-Enable Registers):中断使能寄存器--void NVIC_Init(NVIC_InitTypeDef* NVIC_InitStruct);。其 中断使能寄存器共有8个,ISER[0]设置0~31号中断的使能,ISER[1]设
阅读全文
摘要:Cortex-M3/4 一些调试技巧 今天主要总结下这段时间在没有 调试器 情况下,解决 bug 的一些辅助调试手段。 在没有 调试器 的情况下,进行代码调试的手段就只有 log 大法,为了能够尽可能详细地输出有用的调试信息,往往我们需要将 调用栈 、R0- R15 寄存器、SCB、中断状态、线程状
阅读全文
摘要:根据commit生成patch 可以使用如下两种方式。1. git format-patch -1 commit :生成的patch有统计信息和git的版本信息2. git diff commit_previous commit > mypatch.diff :最原始的diff信息,对于这里的com
阅读全文
摘要:有这样的 目录层次 x/xx/xxx/xxx/ttt.c而 我的 当前位置 是在 x/下 ,执行git diff> test.patch 在test.patch补丁文件里的路径信息是这样的:- - - a/xx/xxx/xxx +++b/xx/xxx/xxx 如果 应用 test.patch 的时候
阅读全文
摘要:qemu static const MemMapEntry virt_memmap[] = { [VIRT_DEBUG] = { 0x0, 0x100 }, [VIRT_MROM] = { 0x1000, 0xf000 }, [VIRT_TEST] = { 0x100000, 0x1000 }, [
阅读全文
摘要:git checkout -f rv64-openamp-port Checking out files: 100% (10938/10938), done. Branch 'rv64-openamp-port' set up to track remote branch 'rv64-openamp
阅读全文
摘要:qemu-system-riscv64 -M virt -m 512M -smp 2 -bios fw_jump.bin -kernel Image -append "rootwait root=/dev/vda console=ttyS0" -drive file=rootfs.ext2,form
阅读全文
摘要:arm32 中断初始化 qemu-system-arm -serial null -serial mon:stdio -nographic -M xilinx-zynq-a9 -m 256M -net tap,ifname=qtap,script=no,downscript=no -net nic,
阅读全文
摘要:在面试官:为什么在中断里不能sleep | Linux 内核一文中,作者逐层深入地讲解了为什么中断中为什么不能sleep,并给出了ISR 里处理耗时工作的解决办法,建议先行阅读。 文中把问题“中断中为什么不能sleep”逐步精确为“为什么在 Linux 里,ISR 被设计成不能睡眠”,讲得很好。但是
阅读全文
摘要:为了防止死锁,spinlock需要关中断和禁止抢占 场景分析 对于spin lock,其保护的资源可能来自多个CPU CORE上的进程上下文和中断上下文的中的访问,其中,进程上下文包括:用户进程通过系统调用访问,内核线程直接访问,来自workqueue中work function的访问(本质上也是内
阅读全文
摘要:attribute有属性的含义,一般出现在代码中是用来定义“编译属性”的,当我们需要将C语言代码中的某个部分编译后链接到某个特定的段时,就需要在这个部分前面加上__attribute__((section(段名))),例如在代码中使用了__attribute__ ((section(".isr_ve
阅读全文
摘要:stm32专题三十八:在SRAM中调试代码 1、启动文件简介 启动文件由汇编编写,是系统上电复位后第一个执行的程序。主要做了以下工作: (1)初始化堆栈指针 MSP=_initial_sp (2)初始化 PC 指针=Reset_Handler (3)初始化中断向量表 (4)配置系统时钟 (5)调用
阅读全文
摘要:先了解下如何使用PendSV异常。(为何要使用PendSV而不是其他的异常,请参考《cortex-M3权威指南》) PendSV异常 PendSV,即可悬起的系统调用,OS可以利用它缓期执行一个异常,直到其它重要的任务完成后才执行操作。触发PendSV只需往NVIC的PendSV悬起寄存器的第2
阅读全文
摘要:简介 每个进程中访问临界资源的那段代码称为临界区(Critical Section) (临界资源是一次仅允许一个进程使用的共享资源)。每次只准许一个进程进入临界区,进入后不允许其他进程进入。不论是硬件临界资源,还是软件临界资源,多个进程必须互斥地对它进行访问。多个进程中涉及到同一个临界资源的临界区称
阅读全文
摘要:[root@bogon gcc-arm-embedded]# yum install gcc-arm-linux-gnu Loaded plugins: fastestmirror, langpacks Repository epel is listed more than once in the
阅读全文
摘要:优先级翻转简介: 就是高优先级的任务运行起来的效果好像成了低优先级,而低优先级比高优先级先运行。 优先级翻转如下所示: 优先级翻转过程: 为什么会发生优先级翻转? 因为两个任务(L和H)使用了同一个二值信号量,而在这两个任务之间,又有一个中等优先级的任务M,在这种情况下就容易发生优先级翻转。主要就是
阅读全文
摘要:ARM:FreeRTOS系统栈和任务栈背景:ARM 有两个栈指针PSP和MSP, 通过Control 寄存器来决定SP(R13)使用哪个栈。我们下面谈论的系统栈和任务栈,就和这两个栈指针有关。 FreeRTOS 任务栈 FreeRTOS不同于裸机每个TASK都有一个任务栈。FreeRTOS的任务栈是
阅读全文
摘要:信号量是操作系统中重要的一部分,信号量一般用来进行资源管理和任务同步,FreeRTOS 中信号量又分为二值信号量、计数型信号量、互斥信号量和递归互斥信号量。 1、信号量用于控制对共享资源的访问 举一个很常见的例子,某个停车场有100个停车位,这 100 个停车位大家都可以用,对于大家来说这 100
阅读全文
摘要:what tos_knl_irq_enter/tos_knl_irq_leave,大多数RTOS实现都提供了类似此一对函数功能的对应接口,需要开发者主动地分别在中断服务函数(ISR)的开始(tos_knl_irq_enter)及结束时调用(tos_knl_irq_leave)。 why 为什么要设计
阅读全文
摘要:内容导读: 第一篇文章讲述了任务的三大元素:任务控制块、任务栈、任务入口函数,并讲述了编写RTOS任务入口函数时三个重要的注意点。 RTOS内功修炼记(一)—— 任务到底应该怎么写? 第二篇文章从任务如何切换开始讲起,引出RTOS内核中的就绪列表、优先级表,一层一层为你揭开RTOS内核优先级抢占式调
阅读全文