- 博客(54)
- 收藏
- 关注
原创 U-Boot tools
可以将环境变量写在 txt 文件,通过 mkenvimage 编译成二进制文件作为 U-Boot 的外部环境变量。书写格式按照 key=value 配对。可以给 zImage 添加文件头成为 uImage 格式,也可以根据 its 文件将多个镜像转换为 uImage 格式并合并到一个镜像。将 U-Boot 启动引导命令编译成启动引导文件。
2023-12-05 16:20:28 652
原创 U-Boot FIT Image
FIT 镜像一般都是把 data 嵌入到 FIT 结构内部,U-Boot 的 SPL 使用外部 data,也可以使用 data-offset 属性的存在性判断镜像类型。data-size 属性在两种情况下都会存在,但是 data-offset 和 data-position 属性只会存在一个。但是镜像数据也可以存储在 FIT 外部,通过 data-position 或者 data-offset 和 data-size 描述镜像信息,使得 FIT 结构变小。
2023-12-04 14:42:23 1118
原创 设备树dts格式、编译和dtb文件结构分析
0x4c、0x6c、0x010c 都是存储 property value,0x4c 后面的 property 地址是 0x5c,因为0x4c 是一个数值占用了 4 bytes;根据最后一个 FDT_END_NODE 的地址可以推算出 dt_string 的开始地址为 0x3e08, dt_struct 的总大小为 0x3dd0,与 size_dt_struct 和 off_dt_strings 的信息一致。node 结构的 name 记录 node name 的存储地址;
2023-11-30 16:33:29 2162
原创 U-Boot 串口初始化流程
创建一个标准设备并且注册到标准设备链表,新注册的标准设备数据流依旧是通过全局变量保存的串口设备实现。根据设备树定义的输出设备从 uclass 列表里查找对应设备,在全局变量中保存查找到的设备。参数标记串口设备已经准备完成,并且将串口波特率设置为全局变量中的。在此之前已经从列表顺序里执行了一些初始化,最重要的是。通过设置的标准设备输出,实质依旧是定义的串口设备。,首先对全局变量的两个参数清零,然后开始执行。查找串口设备与标准输入输出设备绑定,在全局变量中设置串口的波特率。完成了设备驱动的初始化。
2023-11-15 16:03:43 630
原创 U-Boot驱动定义和查找
***//***/ll_entry_declare 宏定义是创建一个类型为 _type 的结构体,并且存放到 _list_2#_name 程序段。_list 作为分类字段,保证 driver 类型连续在一起,_name作为结构体名称。编译后 map 文件可以看到......
2023-11-14 09:52:37 111
原创 U-Boot启动 board_init_f -> init_sequence_f -> initf_dm
开发板:ZYNQ 7000 ZC702Kit Rev1.1。计算当前启动过程使用的时间,并更新计数值用于下一过程。标记当前启动处于哪个过程,并记下当前时钟计数。U-Boot版本:官方2023.04。
2023-11-13 17:30:20 124
原创 修改文件权限和所属
使用参数 -R或 --recursive 递归处理,将指定目录下的所有文件及子目录一并处理。需要 root 权限执行。需要 root 权限执行。
2023-10-12 13:40:40 58
原创 Vitis2023.1自定义AXI IP编译fatal error
自定义IP的makefile与官方IP的makefile部分内容不一致,需要修改自定义IP的makefile,参考如下(主要是修改。学习FPGA自定义IP核章节时,使用AXI接口创建IP导入到Vitis后编译出现错误。
2023-09-18 17:20:45 452
原创 vscode配置宏参数
作用与 vscode 的解析环境,可以控制非活动区变暗。作用与 vscode 的解析环境,可以控制非活动区变暗。作用相当于 gcc 编译时的 CFLAGS。属性可以控制 vscode 模拟对应的 C 环境。按照以上步骤在对应位置填写需要的宏参数,可以使用。按照步骤打开配置文件,在。按照步骤打开配置文件,在。
2023-08-09 16:05:09 1651
原创 Verilog赋值与执行方式
assign 定义的组合逻辑只能对 wire 类型赋值,而且必须是阻塞赋值;always、initial 定义的逻辑只能对 reg 类型赋值。的参数都默认为 wire 类型,TestBench 必须使用 wire 类型作为输出。always 模块中使用相同的赋值方式;同一变量不要在不同的 always 语句赋值。Verilog 的语句执行分为并行执行和顺序执行,执行方式取决于模块语句的赋值方式。阻塞赋值的语句为顺序执行,非阻塞赋值的语句为并行执行。
2023-07-06 10:00:38 756
原创 shell 命令行参数 空格
"$num"与$num双引号保留原始参数内部空格;否则会将多空格压缩为一个空格。"$@"与$@双引号保留原始参数数量和内部空格;否则将参数内部空格解析为分隔符。"$*"与$*双引号将所有参数合并为一个参数,保留内部空格;否则将参数内部空格解析为分隔符。
2023-07-03 16:29:20 1467
原创 链接器和链接脚本
当链接器使用–gc-sections进行垃圾回收时,链接器可能将某些它认为没用的 section 过滤掉,此时就有必要强制让链接器保留一些特定的 section,KEEP()可以使得被标记section的内容不被清除(链接器的链接过程由一个链接脚本控制,该脚本使用链接器命令语言编写,主要用于规定各输入文件中的程序、数据等内容段在输出文件中的空间和地址如何分配。赋值可修改当前地址,指定其后内容的存储位置,如果没有以其它的方式指定输出节的地址,则地址值会根据定位器的当前值计算。
2023-06-21 18:15:41 209
原创 RISCV 交叉编译工具链
RISC-V GCC交叉编译工具根据环境分为好多种。源码工具链编译器的获取可以通过源码自己编译,也可以直接下载编译好的文件。以下是在Ubuntu环境通过源码的方式安装交叉编译器的操作方法,可以参考源码里提供的说明文件。
2023-06-16 16:24:59 1449
原创 FreeRTOS CLI
CLI指命令行界面,开发调试过程中有助于改善人机交互的体验。简易的交互方法可以通过UART传输字符,指明机器执行特定功能,具体格式开发者自行定义。FreeRTOS的CLI组件一定意义上是对交互方式进行了格式化,调试功能单元化,简化开发调试时人机交互的操作。按照结构定义命令,并且将自定义的命令注册到系统中/**/
2023-06-15 14:47:21 1039
原创 动态库链接路径
保持可执行文件与动态库路径的固定关系,可以更换执行时所在路径。运行时默认搜索动态库的路径。设置执行时搜索动态库的路径。,所以识别不到动态库。路径为动态库搜索路径。
2023-05-25 09:45:51 140
原创 makefile 常用函数
以< pattern >模式匹配< text >中字符串(若多个字符串以空格分隔),使用< replacement >替换匹配的< text >,其余内容不变,< pattern >可以包括通配符%表示任意长度的字串。如果< replacement >中也包含%,则< replacement >中的这个%将是< pattern >中的那个%所代表的字符串。> 模式过滤 < text > 字符串中的单词,保留符合模式
2023-04-14 11:23:03 156 1
原创 I2C通信
通信协议IIC Bus:串行通信总线,多主从总线结构,由双向的数据线SDA和时钟线SCL组成。各设备连接到总线的输出端时必须是漏极开路(OD)输出或集电极开路(OC)输出。应用电路常规添加上拉电阻。标准模式结构:高速模式结构:通信时序起始和结束条件数据有效传输应答信号ACK NACKACKNACK设备地址和读写命令7bit地址10bit地址第一字节111...
2022-08-01 15:39:00 78
原创 export LD_LIBRARY_PATH
LD_LIBRARY_PATH程序运行时依赖库的位置,默认是lib /usr/lib /usr/local/lib通过命令export LD_LIBRARY_PATH=path:$LD_LIBRARY_PATH追加用户库文件路径。注意事项通过export添加的环境变量仅针对当前运行shell生效,退出后被重置,而且重新启动的shell也不会继承。问题记录export LD_...
2022-07-29 10:02:00 2113
原创 QT5移植libmodbus
简介在windows平台下基于QT5移植libmodbus库,利用多界面设计进行modbus数据传输,相关平台介绍如下:Windows10Qt Creator 4.13.0libmodbus-3.1.6libmodbus库文件介绍在Windows平台下使用libmodbus需要的文件包括:src文件夹里的.c、.h文件;配置文件config.h,这个文件需要一些额外操作,网上很多...
2022-07-29 09:37:00 344
原创 Linux的用户和密码管理
简介记录Linux关于用户和密码的操作,包括用户和用户组的操作参考链接链接用户创建用户组groupadd groupname创建用户组时在root权限下操作,或者使用 sudo 命令创建用户useradd username创建用户时在root权限下去创建,或者使用 sudo 命令用户关联把用户添加到用户组里在root权限下操作,可以使用useradd userna...
2022-07-29 09:33:00 75
原创 三极管记录
简介记录三极管的类型区分以及使用类型三极管的三个极分别为基极(B)、集电极(C)和发射极(E)。根据三极管内的PN结方向分为 PNP型 和 NPN型 两种,这两种类型的主要区别是电流流向不同。三个极流过的电流关系是:Ic = β * Ib,Ie = (β + 1) * Ib三个极对地电压关系为:NPN型Uc > Ub > UePNP型Ue > Ub >...
2022-07-29 09:30:00 86
原创 makefile notdir 函数
notdir使用格式及返回结果使用notdir函数处理多种后缀文件时未顺利转换单一文件类型假设path路径下有a.cpp b.cpp文件,后最均为cppDIR=pathSRC=$(DIR)/*.cppOBJ=$(notdir %.cpp %.o $(SRC))得到的OBJ内容为a.o b.o多种文件类型假设path路径下有a.cpp b.cpp d.c文件,后缀有cpp和cD...
2022-07-05 07:38:00 202
原创 iTOP4412 TFTP文件传输
简介在Ubuntu系统下搭建TFTP服务器,实现与iTOP4412开发的文件传输,方便开发期间的程序调试。参考链接Ubuntu搭建TFTP服务器iTop4412网络ping测试搭建服务器安装xinetdsudo apt-get install xinetd安装tftp和tftptsudo apt-get install tftp tftpd建立配置文件v...
2021-04-04 16:53:00 102
原创 Ubuntu垃圾清理
简介记录Ubuntu系统下无用垃圾的清理方法,包括软件包和内核。软件包清理清理已卸载的软件包缓存sudo apt-get autoclean清理所有软件包缓存sudo apt-get clean删除未被依赖的软件包sudo apt-get autoremove内核清理查看当前最新的内核版本uname -r浏览历史内核版本dpkg -...
2021-04-04 14:26:00 124
原创 STM32的RS485控制
简介STM32的串口带有DE功能引脚,可以用于硬件控制RS485收发器,以STM32L071RBT6相关的文档为基准作记录。功能描述具体介绍可以在官方参考手册的USART章节,USART functional description小节的RS485 Driver Enable部分查看。整个配置过程需要配置的参数包括:通过USART_CR3控制寄存器的DEM位可以开启硬件RS485控制...
2020-07-14 17:12:00 381
原创 makefile练习
简介makefile用于工程构建和管理,在makefile文件内定义编译和链接规则,通过命令即可进行工程的构建。在Ubuntu环境下开始学习makefile的使用,记录基础操作。makefile文件编写有固定的语法,学习makefile语法可发参考跟我一起写MakeFile网页版 Github单个文件夹下的makefile新建一个文件夹,在文件夹内创建main.c child.c c...
2020-06-14 17:16:00 93
原创 MOS管记录
简介记录MOS管的三个管脚区分方法以及常规使用分辨方法P沟道与N沟道的区分如果中间箭头指向栅极(G),则为N沟道;如果箭头背向栅极(G),则为P沟道。漏极(D)与源极(S)的区分S极:不论是p沟道还是N沟道,两根线相交的就是;D极:不论是p沟道还是N沟道,是单独引线的那边。MOS管的输出与输入N沟道的MOS管把漏极(D)作为输入,源极(S)作为输出;P沟道的...
2020-06-07 14:33:00 132
原创 STM32CubeIDE导入库文件
简介目前使用STM32CubeIDE进行开发,想使用DSP库,通过网友的博客擦操作成功,此处记录下添加库文件的方法。平台环境硬件平台:STM32L071RBT6开发环境:STM32CubeIDE v1.3.0步骤复制库文件如果当前工程目录下没有库文件的话需要先复制库文件到工程目录下,使用的库文件可以在安装的固件库文件夹目录下的/Drivers/CMSIS/Lib文件夹下获取。...
2020-06-07 13:25:00 824
原创 STM32之RTC
简介记录STM32内部RTC的使用和操作,只是使用时间日历功能平台MCU:STM32L071RBT6开发环境:STM32CubeIDE + STM32CubeMXRTC启用配置时钟配置时钟源选择外部低速时钟(LSE = 32.768KHz),通过外部纽扣电池供电保证RTC在芯片断电后可以工作参数配置Calendar Time项是配置上电默认设置的时间,Calendar D...
2020-06-01 17:09:00 425
原创 STM32CubeIDE使用%f
简介在STM32CubeIDE编译器下使用sprintf、vsprintf等函数时出现处理%f会导致硬件错误,此处记录修改方法.平台软件版本STM32CubeIDE v1.3.1 + STM32CubeMX v5.6.1库版本STM32L0 HAL v1.11.2 + FreeRTOS v10.0.1问题记录在FreeRTOS创建的任务内部使用vsprintf函数处理...
2020-05-20 15:11:00 171
原创 QCharts记录
简介记录QT5自带的QCharts绘图库使用,安装的时候记得勾选QCharts。工程配置pro文件添加 QT += chartsh文件#include <QtCharts>cpp文件QT_CHARTS_USE_NAMESPACE //使用QtCharts命名空间UI设计拖放一个Widget控件,右键选择提升,提升的类名称填入QChar...
2020-04-09 20:35:00 64
原创 QT的MD5计算
简介基于QT进行MD5值计算,安装版本为QT5.13.0,需要#include "QCryptographicHash"接口介绍QCryptographicHash类中Algorithm枚举了可以计算的类型。计算方式分为两种:通过addData接口动态计算,通过hash接口静态计算;图中截取了该类的公共接口使用方法动态计算先创建一个实例并指定计算的类型,调用reset接口复位对象,...
2020-04-01 14:36:00 158
原创 Qt的UI文件使用
简介学习Qt中的UI文件调用,记录操作步骤。创建一个基于QMainWindow的MainWindow类并勾选创建.ui文件作为主界面,新建一个基于Dialog类的.ui文件作为子界面,在主界面中调用。新建一个UI文件右键工程名称,选择Add New...新建Qt类别下的Qt Designer Form文件即创建一个新的.ui文件,新的ui文件需要从模板中选择一个类型使用。引用ui文件文...
2020-04-01 13:40:00 103
原创 STM32的硬件CRC
简介基于STM32F105介绍STM32的硬件CRC和使用方法,并记录软件检验实现。STM32的CRC介绍手册中说明STM32的CRC硬件校验使用的是32位CRC校验,多项式为0x04C11DB7;CRC计算时一次性运算32bits,不是按照字节运算;CRC_DR寄存器的复位值为0xFFFFFFFF,即CRC计算的初始值。STM32的CRC使用STM32的CRC_DR寄存器既作为输...
2020-03-28 09:45:00 224
原创 RT-Thread之自动初始化
简介学习RT-Thread RTOS中的自动初始化原理参考文章简书链接CSDN博客内容提炼实现机制编译后按照section名称在内存中进行排列,只要保证自动初始化的函数所在的section是连续的并且类型一致,那么就可以从起始地址到结束地址挨个执行实现自动初始化。默认情况下这些函数所在section各不相同,所以需要人为约定一个section,把自动初始化函数都放到这个sect...
2020-03-20 19:07:00 53
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人