- 博客(2)
- 收藏
- 关注
原创 漫谈关于AT32F415的启动流程与内存分配
当上电后,程序运行时,首先程序会从特定的地址进行启动,启动时会将RW-data的数据加载到SRAM中(启用文件中有一段代码是干这件事的,说的在具体点是分散加载文件会做这件事,在默认情况下,keil中的链接器armlink工具(D:\Keil_v526\ARM\ARMCC\bin\armlink.exe)已经帮你做完了这件事),单片机的 RO区域不需要加载到 SRAM,内核直接从 FLASH 读取指令运行。当使用keil进行单片机的开发时,运行一段程序后,在output输出框会看到如下图的结果。
2023-10-14 20:34:57 470 1
原创 嵌入式C中使用数组的陷阱
gets()函数内部定义了一个500字节的数组,攻击者发送了大于500字节的数据,利用溢出的数据修改了堆栈中的PC指针,从而获取了系统权限。这里声明了拥有30个元素的数组,不幸的是for循环代码中误用了本不存在的数组元素SensorData[30],但C语言却默许这么使用,并欣然的按照代码改变了数组元素SensorData[30]所在位置的值, SensorData[30]所在的位置原本是一个LCD显示变量,这正是显示屏上的那个值不正常被改变的原因。我们常常用数组来缓存通讯中的一帧数据。
2023-07-06 10:42:38 60 1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人