- 博客(63)
- 资源 (1)
- 收藏
- 关注
原创 第2章 编译SDK
编译打包完成后会在 rockdev 目录下生成 update.img。在./build.sh all的基础上增加打包。完成后会生成rk356x_amp 文件夹。将SDK压缩包拷贝到ubuntu。
2024-07-26 22:00:00 243
原创 修改启动方案
用vscode打开设备树文件rk3568-evb1-ddr4-v10-linux-amp.dts修改。用vscode打开its 配置文件rk3568_amp_linux.its文件修改。AMP设置为1Linux(CPU0) +3HAL(CPU1、 2、 3) 配置。
2024-07-26 22:00:00 180
原创 搭建开发环境
默认情况下,“write_enable=YES”前面有一个“#”号,我们需要将其去掉,使能该配置。新安装的ubuntu没有设置 root 用户密码,打开终端,输入。1、Ubuntu 系统设置 root 用户密码。3、Ubuntu 系统下搭建 FTP 服务器。4、Ubuntu 系统搭建 ssh 服务器。2、虚拟机设置网络适配器。执行命令后依次输入密码。
2024-07-23 22:00:00 256
原创 了解PHY,MAC芯片
PHY在发送数据的时候,收到MAC过来的数据(对PHY来说,没有帧的概念,对它来说,都是数据而不管什么地址,数据还是CRC),每4bit就增加1bit的检错码,然后把并行数据转化为串行流数据,再按照物理层的编码规则把数据编码,再变为模拟信号把数据送出去。(Gigabit MII): GMII 接口向下兼容 MII 接口, 支持 10Mbps、 100Mbps 和 1000Mbps 的操作,数据位宽为 8 位。在 1000Mbps 传输速率下,时钟频率为 125Mhz,在时钟的上下沿同时采样数据。
2024-07-18 22:00:00 1291
原创 stm32f103zet6笔记1-led工程
1、选择串口调试2、LED0连接到PB5,PB5设置为推挽输出。PE5同理。3、生成成对的.c,.h文件。4、debugger选择j-link。5、connection选择SWD。6、编写bsp_led.c,bsp_led.h文件。7、下载调试,可以看到LED0 500ms闪烁一次,LED1 1000ms闪烁一次。
2024-03-04 20:00:00 431
原创 VSCode
File - preference - settings - extensions - run code configration,将“Run Code Configuration”中的“Run In Terminal"、"Save File Before Run"前面的复选框选中。1.1 安装MinGW并将MinGW的bin路径添加到系统环境变量。1.4vscode安装Code Runner插件。1.3vscode安装C/C++插件。2、设置只搜索.c.h文件。1.2按照vscode。
2024-02-28 09:51:49 943
原创 linux总线设备驱动框架
驱动也会向总线告知自己能够支持的设备的条件(一般是型号ID等,最简单的也可以是设备的名字)。在驱动注册的时候,总线也会遍历注册在其之上的设备,找到其支持的设备(可以是多个,驱动和设备的关系是1:N),并将设备填入驱动的支持列表中。match之后,设备和驱动之间的交互与总线无关。设备会向总线提出自己对驱动的条件(最简单的也是最精确的就是指定对方的名字了),总线就会遍历注册在它上面的驱动,找到最适合这个设备的驱动,然后填入设备的结构成员中。驱动和设备的关系是一对多。驱动和设备都要注册到总线上。
2024-02-28 09:29:54 372
原创 RT-Thread设备驱动框架
I/O设备是input/output设备,串口,定时器,adc,i2c,spi,flash,SD,USB等都是I/O设备。
2024-02-28 09:23:01 450
原创 RT-Thread PIN设备驱动框架
2、设备驱动框架层定义的PIN设备操作方法如下:2.1 pin_get接口厂商对引脚的定义一般是PA0,PE15,P10,P415等。为了兼容各个硬件平台,设计pin_get函数,该函数的作用是给每个引脚用数字编号,从0开始。比如针对STM32,pin_get函数使PA0-PA15的值为0-15,PB0-PB15的值是16-31,这样各个引脚经过pin_get调用后都返回1个唯一的编号。类似编码的过程。设置引脚接口。有个参数是pin,那么这个函数需要解码,假设pin=0,则需要解析出是对PA0进行操作
2024-02-28 09:21:36 310
原创 RT-Thread内核对象
RT-Thread 内核采用面向对象的设计思想进行设计,内核对象包括:线程,信号量,互斥量,事件,邮箱,消息队列和定时器,内存池,设备驱动等种类。RT-Thread 通过对象容器来管理所有内核对象。对象容器中包含了每类内核对象的信息,包括对象类型,大小等。对象容器给每类内核对象分配了一个链表,该类的内核对象都被链接到该链表上。
2024-02-28 09:21:00 431
原创 C语言打印文件名、函数名、行号、时间信息
_FUNCTION__ or __func__:函数名(字符串)__LINE__:当前打印函数所在的行号(整型数据)__DATE__:当前日期(和系统有关,是字符串)__TIME__:实时时间(字符串)1. 标准库中一些特殊的宏。__FILE__:文件名(
2024-02-28 09:14:27 856
原创 结构体位域保存传感器数据
8个74HC4052共用两个选通引脚,8个输入引脚,一共可以检测64个数字红外传感器。74HC4052的功能表如下,nY0表示所有Y0引脚。产品有64个数字红外传感器,传感器的状态有两种,0或1,使用结构体位域,在节省内存的同时还方便阅读。这个定义在中间层,应用层调用中间层,驱动层负责获取传感器的状态并赋值给这个结构体。
2024-02-28 09:07:39 365
原创 字符的编码方式
例如fontdata_8x16,表示横坐标8个像素,纵坐标16个像素。对于1个字符,用16个字节表示,每个字节对应1行的8个像素点,为1的位表示点亮,0表示熄灭。用2个字节对所有字符编码。ANSI的数值和字符不一一对应。不同的地区有不同的字符集,不同的字符集对同一个编码值显示出不同的字符。用1个字节对字母、标点符号等字符进行编码,每个字符有一个唯一的数值。由于常用的字符不超过127个,所以用1个字节来编码足够了。用3个字节来编码,对所有字符统一编码,一个码值对应一个字符。4、ASCII字符的点阵显示。
2024-02-28 09:06:42 434
原创 大小端模式
超过1字节的数据在内存中存放方式有两种,大端模式和小端模式。大端模式:数据的高字节存放在低地址,低字节存放在高地址小端模式:数据的高字节放在高地址,低字节放在低地址。这里的所说的数据都是超过8位的。大小端模式和处理器、编译器都有关系。ARM芯片都是小端模式。keil c51是大端模式。
2024-02-28 09:02:41 363
原创 单片机调试经验
1、ADC采样时钟小一点,采样周期大一点,adc的转换结果就稳定一点。另外AD采集引脚要有电容接地,作用是滤波,一般是0.01uF。2、PWM驱动三极管再驱动背光LED,频率1k左右即可,频率太快三极管反应不过来。3、锂电池:一般3.5V低电报警。3.4V进入低电保护,只能充电唤醒。
2024-02-28 08:58:59 318
原创 N32G455VE开发笔记一-JLink添加芯片
产品用到N32G455VE,JLink版本是JLink_V644g,没有该芯片,需要添加。用到的资料由厂家提供。所有芯片配置的内容复制到安装路径下的。需要添加的国民技术芯片型号文件。解锁读保护应用程序所需的配置文件。解锁国民技术芯片读保护。文档末尾,点击保存。
2024-02-28 08:44:05 919
原创 C语言-数组
sizeof(a[0]输出的是数组元素a[0]的大小。sizeof(a)输出的是指针类型的大小。1、数组做函数形参时,数组名是指针。
2024-02-27 18:48:53 379
原创 大厂C语言编程规范总结
1.2、头文件尽量少包含其他头文件,在.c文件包含,不将头文件集中放置在include.h且每个.c文件都包含include.h。等的定义和声明都放置在.c文件,且加static修饰,对外的将声明放置在.h文件。采用动词+名词的结构,使用小写字母,单词间使用下划线分隔开。使用unix风格,单词用小写字母,字母间使用下划线分隔开。1.3、防止头文件被重复包含,格式是FILENAME_H。3.1、多条语句的宏定义用do-while(0)语句。全局变量使用前缀g_,静态变量使用前缀s_1.1、模块内部使用的。
2024-02-27 18:47:40 362
原创 C语言知识点
1、break只能跳出本层循环,如果循环是嵌套的,要逐层跳出,想要全部跳出可以用return。2、continue是跳过当前循环中continue语句后的语句,进行下一次循环条件的判断。3、int (*a)[10]:a是一个指针,指向的类型是int [10]inta[10]: 数组符号比指针符号优先级高,a是一个数组,该数组的元素是int类型int (a[10])(int) a是一个数组,数组元素是int()(int)类型,即是指向函数的指针4、*p++先取值,再加1。
2024-02-27 18:47:11 370
原创 FreeRTOS队列
在阻塞期间,函数会将当前任务挂起,并添加到等待发送队列中,然后解锁队列并恢复调度器。读队列阻塞:读队列时,队列为空,则可以设置阻塞时间,该任务进入阻塞态,队列不为空时自动由阻塞态进入就绪态,超时也由阻塞态进入就绪态。如果满足条件,将数据复制到队列中。队列通常采用先进先出的方式,即FIFO,从队列尾部入队,从队列头部出队。总之,xQueueGenericSend函数用于向队列发送数据,并提供了阻塞和非阻塞的操作方式,以及对任务切换的支持。队列类型有普通队列,二值信号量队列,计数信号量队列,互斥信号量队列等。
2024-02-27 18:37:23 855
原创 MIMXRT1064DVL6A开发笔记五-XIP原理
启动IDE调试时,预先放在IDE里的Flash下载算法(可执行文件)会首先通过调试器下载到i.MXRT内部FlexRAM中运行,并完成FlexSPI外设初始化和应用程序下载工作(将应用程序可执行文件下载进串行Flash中),应用程序下载完成之后,便由CoreSight开始接管调试工作,此时CPU已经可以通过AHB总线访问挂在FlexSPI外设上的串行Flash里的代码,所以CoreSight当然可以完成实时代码运行控制与跟踪,你在IDE里也就可以进行单步调试啦。ASB是AHB的一种替代方案。
2024-02-26 10:02:19 9
原创 MIMXRT1064DVL6A开发笔记三-ADC_ETC
4、配置ETC_TRIG Chain x Register,在SDK中通过adc_etc_trigger_config_t结构体,ADC_ETC_SetTriggerChainConfig函数来设置。3、配置ETC_TRIGX Control Register,在SDK中通过adc_etc_trigger_config_t结构体,ADC_ETC_SetTriggerConfig函数来设置。Queue0/1/2/3分别由TRIG0/1/2/3触发,Queue4/5/6/7分别由TRIG4/5/6/7触发。
2024-02-26 09:59:49 259
原创 MIMXRT1064DVL6A开发笔记四-icf文件
4M片上flash,接到flexspi2,地址范围是 0x7000 0000 - 0x703F FFFF。
2024-02-26 09:59:11 195
原创 N32G430C8开发笔记二-UART驱动开发
E:\tfs\data\smartsafe\N32G430\Nations.N32G430_Library.1.0.0\projects\n32g430_EVAL\examples\USART\Interrupt开发uart1和uart3驱动。Uart1_tx引脚使用PA9,重映射使用AF5,Uart1_rx引脚使用PA10,重映射使用AF5,Uart3_tx引脚使用PB10,重映射使用AF10,Uart3_Rx引脚使用PB11,重映射使用AF10。配置IO的复用功能为UART。4、uart中断响应函数。
2024-01-24 21:00:00 637
原创 N32G430C8开发笔记一-新建IAR工程
如果没有这款芯片,则先安装IAR的芯片支持包。E:\tfs\data\smartsafe\N32G430\6.软件开发套件\PACK\PACK\N32G430 PACK AddOn to IAR Tool V1.0.0。这个芯片没有浮点数运算单元,选择NONE。根据原厂SDK的文件结构在IAR新建相应分组,把各个文件夹的文件加载进去,其中startup文件选择IAR平台的startup_n32g430_EWARM.s。1、新建工程,保存到project文件夹。3、添加头文件路径,选择相对路径。
2024-01-24 16:55:52 569
原创 ringbuffer+log方式的调试串口
调试串口使用查询方式发送,发送buffer采用环形buffer,打印信息包含文件,函数名和行数。可以在中断中打印调试信息。
2024-01-02 21:00:00 725
原创 使用DWT实现us级延时
它有一个32位的寄存器叫CYCCNT,它是一个向上的计数器,记录的是内核时钟运行的个数,内核时钟跳动一次,该计数器就加1,精度非常高。Cortex-M3,M4,M7内核有一个外设叫DWT(Data Watchpoint and Trace),用于系统调试及跟踪。1、使能DWT外设,由内核调试寄存器DEMCR的位24控制,写1使能。2、使能DWT的CYCCNT计数器,由DWT->CTRL的bit0控制。当CYCCNT溢出之后,会清0重新开始向上计数。3、获取计数值DWT_CYCCNT。
2023-11-15 21:00:00 135
原创 SPI调试记录
两个MCU通过spi通信。N32G455VE是主机,MIMXRT1064是从机。业务流程由从机发起,当从机需要发起业务时,通过1个外部中断引脚通知主机,由主机发起spi通信。N32G455VE使用SPI2,GPIOD2。DMA1 channel5中断响应。DMA1 channel4中断响应。GPIOD2设置为外部中断输入引脚。SPI2 DMA发送配置。SPI2 DMA接收配置。
2023-10-07 18:59:08 126
原创 软件版本号定义在flash固定地址
编译发现版本号没有编译进bin文件,经排查,原因是bootVer未使用,被编译器优化,编译器是IAR。在main中加入下面代码,编译后在bin文件的 0x0800FFE0 地址处看到软件版本号。bootloader的软件版本定义在0x0800FFE0。MCU是N32G455VE,bootloader地址是。
2023-08-30 18:58:32 138
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人