Sourcelink

写过单片机,焊过BGA,睡过实验室,炸过小电容

【从零开始写RTOS】VSCODE开发STM32

一. 构建 先生成makefile cmake .. -DBOARD_FAMILY=NUCLEO_STM32F746ZG 其中-DBOARD_FAMILY=NUCLEO_STM32F746ZG是为了指定对应的board; 编译makefile make 输出日志: Scanning dependencies of target arch [ 10%] Bui...

【从零开始写RTOS】内核调度

一. 临界区 在rtos中,进入临界区的实质是关闭中断(可配置优先级的),退出临界区就是开启中断(但是原先系统中断是关闭的情况下无需开启) 修改后: unsigned int port_enter_critical(void) { unsigned int ret = port_cpu_primask_get(); port_cpu_int_disable(); ret...

【从零开始写RTOS】汇编语言

一. 环境 开发环境: linux 汇编:gcc 二. 指令 .equ 类似#define , 常量符号 exp: .equ NVA 0x10000 .text 声明接下来的代码都是放在text段(可以去看下链接文件) .align 4 变量的对齐宽度 .thumb 表示接下来都使用汇编为thumb指令 .syntax...

【从零开始写RTOS】stlink环境搭建

一. 源码安装 1.1 源码下载 git clone https://github.com/texane/stlink 1.2 编译 make 直接在stlink目录下直接make cmake mkdir build && cd build && c...

【从零开始写RTOS】操作系统原理

一. 什么是操作系统? 缩写: OS, Operating System, 管理计算机硬件和软件资源的系统软件; 可以尽可能的有效利用单片机的硬件资源 可以高效的运行和处理我们的业务逻辑 二. 使用RTOS 2.1 无OS int main() { while (1) { ...

【从零开始写RTOS】必备技能

这是一篇关于【从零开始写RTOS】视频的笔记视频讲解地址 一. 开发环境 操作系统:ubuntu16.04 开发平台:stm32f746 编译工具: arm-gcc (keil armcc) 编辑器:vscode 下载器:st-link 编译脚本: cmake 二. 知识点 2.1 语言 C语言 ...

详解Linux内核Radix树算法的实现

一. 概述 宿主机: ubuntu16.04 内核版本: linux-4.19 $\quad\quad$关于linux的Radix Tree我从网上看了许多文章, 但是都看的不明不白, 后面通过分析源码才慢慢明白, 在内核中利用 Radix Tree 可以根据一个长整型 (比如一个长 ID) 快速查找到其对应的对象指针, 可以说是一个key-value的方式插入和查找方式; 1...

详解Linux内核红黑树算法的实现

一. 概述 宿主机: ubuntu16.04 内核版本: linux-3.0.8 红黑树是每个节点都带有颜色属性的二叉查找树,颜色为红色或黑色。在二叉查找树强制一般要求以外,对于任何有效的红黑树我们增加了如下的额外要求: 1.节点是红色或黑色。 根是黑色。 所有叶子都是黑色(叶子是NIL节点)。 每个红色节点必须有两个黑色的子节点。(从每个叶...

dtb信息转化为device_node结构

一. 概述 宿主机: ubuntu16.04 开发板: tq-imx6ul 内核版本: linux-4.1.15 内核在启动的时候会读取dtb文件, 将dtb中的信息提取出来转换成对应的device_node, 接下来分析了下device_node等数据结构含义和实现过程; 二. 结构体分析 2.1 struct device_node Device Tree中的每一个no...

根据dts匹配对应单板

一. 概述 宿主机: ubuntu16.04 开发板: tq-imx6ul 内核版本: linux-4.1.15 以前最早学习linux驱动时, 使用的是无设备树版本的内核, 内核是通过uboot传来的machine id选择对应的machine_desc, 而现在换成了设备树版本它是如何根据设备树进行对应的machine_desc选择的呢? 前面讲设备树常用节点和属性时候, 说...