自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(18)
  • 收藏
  • 关注

原创 usb_tuning工具的调试总结

此工具是原本是uart接口,后为了省内存改为usb。tuning工具是python写的图形化窗口交互工具,用来给用户获取修改isp和3a参数,交互方式有敲命令、拖动滑条和点击标签。在调试过程中下位机arm程序出现的几个问题1.程序运行中出现异常 一开始用trace32追踪,只能查出程序是在dev->send指针处出现预取指中止,发现send函数指针的值被改成0xcdcdcdcd,至此只能判断是内存覆盖。于是在send变量的内存处设置内存写断点,后来在usb驱动...

2021-08-12 18:05:00 573

原创 find和grep命令常用用法

一、find命令find [path] <-option><pattern>实例:find /bin/ -name apt-cyg 查找/bin目录下名字为apt-cyg的文件 二、grep命令grep [-option] <pattern> [path]实例:grep -r --include=*.c 'student' /home/cxyu 递归查找/home/cxyu目录下.c结尾的文件‘student’所在的字符串...

2021-07-23 14:44:46 626

原创 ARM中断触发过程及仲裁机制

各个外设的interrupt interface 接入vic中断控制器。当多个外设触发中断时,所有中断会被送到vic的srcpnd寄存器,先比较中断模式,

2021-07-22 16:02:20 647

原创 计算文件的字节数

一、fgetpos、fsetpos、fseek、ftell函数介绍fgetpos原型:int fgetpos(FILE * restrict stream,fpos_t * restrict pos);

2021-07-22 15:18:43 995

原创 source insight支持python

从官网copy下来的文件和文档还收钱,要开会员才能免费下。那咱就自己动手丰衣足食了。此处是官网链接https://www.sourceinsight.com/download/custom-languages/我用的是倒数第六个。

2021-07-19 19:04:42 136

原创 柔性数组和变长数组(VLA)

一、柔性数组typedef struct{ int head; int tail; char buf[];//char buf[0]也可,区别是前者为c99支持,后者为编译器非标准扩展。}ring;柔性数组应用广泛,相比定长数组,它能根据需要动态分配空间,节省资源;相比指针,他的内存跟结构体是连续的,方便操作和管理。二、变长数组(VLA)int row = 10;int col = 20;char arry[row][col];//VLA数组变长...

2021-07-09 13:57:55 321

原创 calloc与malloc的区别

calloc实现了内存清零的功能,malloc需要手动memset清零。

2021-07-09 11:11:21 78

原创 栈的动态分配以及栈由谁管理的问题

我们都知道C语言提供了malloc等函数让程序员手动来分配释放堆空间,而栈空间一般是自动分配与释放的。这里我要补充两点:1.栈也是能动态分配的,C语言提供了alloca函数让程序员动态分配栈内存,且不需要手动释放,对没错,你来分配,主调函数返回时由编译器(生成的类析构程序)来给你擦屁股。但alloca不具可移植性, 而且在没有传统堆栈的机器上很难实现。当它的返回值直接传入另一个函数时会带来问题,因为他分配在栈上.由于这些原因,alloca不宜使用在必须广泛移植的程序中, 一般使用的很少,不管它.

2021-07-01 19:55:24 2469 1

原创 深刻解析volatile的作用

要讲volatile的作用,我们不得不提一下arm处理器(微机)的程序运行过程。微机的程序运行过程实际就是取指、译码、执行,这也被称为arm的三级流水线结构。程序运行时,会先被加载到内存,接着大部分临时数据会直接被cpu从内存搬到寄存器中,再从寄存器搬到运算单元计算完之后返回到寄存器,由寄存器传回给内存。最后有用的数据会被保存在flash、硬盘等非易失性存储器。然而有些数据在程序运行期间会被多次使用,如果每次都需要从内存重新读取数据会耗费cpu大量的等待时间,影响程序执行效率。为此,cpu.

2021-06-28 15:41:52 169

原创 source insight的使用教程

新建工程

2021-06-21 23:58:54 368

原创 负数在内存中的存储以及位运算

负数在内存中是以其相应正数的补码形式存储的,且位运算是根据内存中的二进制位进行运算的,而不是数据的二进制形式;其他位运算符也一样。1111 1111 -- 1111 1111 -- 1111 1111 -- 1111 0111 (-9 在内存中的存储)-0000 0000 -- 0000 0000 -- 0000 0000 -- 0000 1001 (-9 的二进制形式,前面多余的 0 可以抹掉)...

2021-06-21 10:57:43 1021

原创 嵌入式书籍推荐

1.硬件方面:微机原理,数字电路,高校教材2.Linux:arm体系架构与编程、嵌入式Linux应用开发完全手册、Linux设备驱动开发详解、Linux内核完全注释、Linuxneh

2021-06-17 19:33:48 257

原创 spi的fifo与dma接口配置

spi端的配置transmit fifo的watermark应尽可能低以确保传输次数少、总线利用率高,但同时要防止下溢风险。同理,receive fifo的watermark应尽可能高,但同时防止上溢风险。同时dma端的配置应尽量满足以下关系dma write size = transmit fifo depth - transmit fifo watermarkdma read size = receive fifo watermark...

2021-06-17 19:32:22 3092 5

原创 error:expected identifier before ‘(‘ token,结构体指针宏定义错误

error:expected identifier before ‘(’ token,结构体指针宏定义错误编译时弹出标题所示错误,一般为宏定义里有与其他地方重复的常量符号。找出名字重复的符号并修改即可。如:A文件中:#define UART (UART_TYPEDEF *)BASE_ADDR_UARTB文件中:typedef enum{UART, (此处与上面A文件中宏定义UART重名,编译会报错)SPI,USB}DEV;...

2021-03-01 17:39:29 6516

原创 keil5中编译错误error:expresion must be a poointer

keil5中编译错误error:expresion must be a poointer宏后面加上图示括号即可编译正确。

2020-12-06 17:36:49 322 1

原创 工作中用git命令下载以及提交代码流程

让公司IT给你配git权限SSH密钥。配置你的用户名和邮箱等,方便git log的查询管理。例 : git config --global user.name fishsuperbeargit config --global user.email fishsuperbear@abcd.com先进入你本地的工作目录,项目会被克隆在这个目录。见第四步。一般公司在远程服务器上都会有远程库,所以不需要用到git init 来初始化本地库,直接克隆公司的库。打开git bash命令窗口,git remo.

2020-08-26 11:15:39 407

原创 对于数据手册中assert和de-assert的官方解释

assert:: Drive a signal to its active voltage level, either high or low.deassert: :Drive a signal to its inactive voltage level, either high or low.翻译:assert:给信号一个有效电平,这个电平可以是高也可以是低。de-assert: 给信号一个无效电平,这个电平可以是高也可以是低。...

2020-08-24 20:07:45 1393

原创 宏定义带参函数的问题

宏定义带参函数的问题

2020-08-04 20:00:40 162

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除