Category Archives: Embedded Systems - Page 2

ARM中CODE、RO、RW、ZI的含义

当编译一个ARM程序后,会出现Code=…  RO-data= …  RW-data=…  ZI-data=…  的提示报告,如:

Program Size: Code=976 RO-data=344 RW-data=4 ZI-data=612  

那么这些数据的含义究竟是什么呢?

CODE:代码区占用大小,即程序指令的大小;

RO:只读变量占用大小,用于保存常量和查询表的大小;

RW:读写变量占用大小,是已初始化为非0的变量的大小;

ZI:全零变量占用大小,是初始化为0的变量,或者未初始化的变量(编译器自动将这些变量清0)

实际使用的ROM和RAM大小是:

ROM = CODE + RO + RW

RAM =  RW + ZI

这里可能会有一个疑问,就是RW为什么也会占用ROM空间?这是因为数据不会凭空产生,对于有明确初始值的变量,需要事先存储该变量的初始值,在程序启动的最开始阶段,这些变量被初始化并移至RAM区。

我为什么选择STM32

自从1976年Intel 8048诞生以来,单片机经历了8位、增强型8位、16位三个时代。

最早的电子工程师使用8位机作为硬件平台,利用汇编语言编写程序。当时的单片机程序空间有限,一般只有1-2KB的ROM可供使用。之后出现了8051单片机,程序空间提高到了4KB,使高级语言的使用也成为了可能。近十年来,增强型8位机发展迅猛,有加强型8051单片机、AVR单片机、PIC单片机等,这些单片机具有很大的ROM与RAM空间,可以使用C语言编程。同时这些单片机具有丰富的外设资源,可以满足工业、消费电子、汽车、仪器仪表等多方面的需要。与次同时,市场上也有很多16位机广受欢迎。比如飞思卡尔的MS9S12系列广泛用于汽车行业,TI的MSP430用于仪器仪表、物联网行业。

L_Intel-D8048H

图1  Intel 8048单片机

如果没有Cortex-M3的诞生,谁也不会想到高端的32位机也能进入单片机市场。STM32单片机的出现动摇了8位机的天下,它丰富的性能、外设、网络、通讯功能,以及完全可以与8位机拼搏的价格,让很多人不由自主的开始关注起它。

STM32卓越的性能、丰富的功能,以及稳健的外设库,让工程师们不再把精力用于调试底层、精简代码,而是把更多的精力放在应用上。我认为这必将是一个划时代的作品,让单片机进入32位的时代,这是一种趋势。利用STM32,工程师可以开发出性能更加优越、功能更加丰富的产品。然而,这也是一次挑战,使用32位处理器需要我们转变很多传统的设计思维。同时复杂性的提高也会导致设计中的要点急剧增多,我们可能会很难找到设计症结的所在。同时资源的丰富也需要我们在功能与性能之间作出权衡。

我相信,不需要过长时间,很多事情就会明朗起来。

STM32_p2326shigh图2  STM32单片机

解决丢失固件后的JLINK及体会

假前的最后几天,准备调试STM32的液晶显示用于示波器项目。可是JLINK插上电脑后指示灯一直不亮,并且在设备管理器中显示为“Unknown Device”。Baidu了一下,网上说有可能是USB线的质量问题,但我更换了四条后还是无果。

后来得知有可能是固件丢失了,需要重新下载固件,我想这下麻烦了,我只有一个JLINK,无法给这个JLINK下载固件啊。在我准备重买一个之前,我还是看了一下如何刷JLINK固件。让我想不到的是,刷新JLINK的固件竟然不需要任何专业的工具,只需要把JLINK连接电脑,然后按一定规律短接几根引脚,之后使用ATMEL公司的AT91-ISP软件包即可。

按照网上的教程操作,需要注意的是,根据JLINK版型的不同,所要短接引脚的位置也不同。我见到过的有两个硬件版本,有一种版型会直接在丝印上标明TST及ERASE引脚,而有一种版型则没有丝印标明:

第一种>>这一种没有用丝印标明,红色所示处为ERASE,紧邻其下方的另一组过孔为TST。

第二种>>这一种在丝印层上标明了:

更新固件的操作步骤是(需要严格按此顺序执行):

步骤1  擦除FLASH
上电,拉高ERASE(短接跳线),等待5秒,恢复ERASE(移除跳线),断电。

步骤2  恢复BOOT
拉高TST(短接跳线),再次上电,等待10秒断电,恢复TST。

步骤3  烧写固件
1. 安装AT91-ISP.exe
2. 打开SAM-PROG软件,载入固件所在路径,选择Set Security复选框
3. 插入JLINK的USB线,此时应提示找到ATMEL AT91XXXX TestBoard设备
4. 点击软件界面的Write进行写入,此时JLINK红灯点亮
5. 等待写入完成后重新插入JLINK,升级成功。

这一次升级给我的最大体会就是,如果一个产品可以不借助任何特殊工具,只需要连接USB就可以升级固件,那这样会在客户需要升级和维修时有无以伦比的便捷。这种方式与STC单片机的串口下载有异曲同工之妙,可是相比串口下载,USB下载更加简便和统一。

工具包
在这里把软件下载地址也附在后面,方便大家快速解决问题,华为网盘:http://dl.vmall.com/c0t0dsw7zf