什么是裸机程序
代码量比较少,不带操作系统的单片机程序就是所说的裸机程序。
裸机程序里可以看到直接对处理器(所说的MCU)的寄存器、内存、I/O端口等进行读写操作。
程序开发过程中,必须做的一件事是排查Bug和修复Bug,那Bug这个定义是怎么来的?
20世纪40年代,当Grace Hopper中尉第一次在 “事件记事本” 中把引起 “MARK II” 计算机死机的飞蛾注明为 “第一个发现虫子的实例” 后,人们便将计算机和软件的错误戏称为虫子(Bug)。
一、硬件调试
假如你是在Keil或IAR等开发软件上开发程序,大部分处理器支持使用专用下载器进行Debug,比如J-Link,ST-Link等仿真器/下载器。
调试过程中通常采用设置断点、单步执行、查看寄存器、变量内存值等方法,可以直观看到运行过程中的实时数据,快速排查问题,提高开发效率。
二、串口调试
如果条件有限,比如手上没有仿真器或处理器不支持硬件调试,那么可以采用串口打印自定义信息进行调试,看看程序运行情况,卡在哪里,实际数据等。
串口打印可以使用标准库函数 printf,查看变量的值,但是它比较占用内存空间。
printf("temp:%d\r\n",i_temp); //标准库打印函数,占用内存较大
串口打印还可以使用自定义串口函数,比如uart0_send_bytes(…),打印字符串或ASCII值,占用内存小。
void uart0_send_bytes(uint8_t *buff,