这些函数怎么用?
GNUARM汇编指令一、内存访问指令指令t说明ADRt取相对于PC的地址到寄存器LDRt取数据到寄存器LDMt批量取数据到寄存器STRt将寄存器上的数据保存到内存STMt批量到寄存器数据内存PUSHt数据入栈POPt数据出栈二、通用数据处理指令指令t功能ADDt加法SUBt减法ANDt按位与ORRt按位或EORt按位异或BICt按位清零LSLt逻辑左移LSRt逻辑右移CMPt比较CMNt源数据取反后比较TSTt测试MOVt移动数据MVNt源数据取反后移动三、分支和控制指令指令t功能Bt跳转BLt跳转并将返回地址保存到LR寄存器中四、其它指令指令t功能DCDt数据定义ENDt程序结束掌握以上指令,基本上能看得懂uboot初始化代码。
1、stm32flash写数据怎么存储的在实际的项目中,我们可能需要保存一些数据,希望下次启动的时候数据还可以使用。在这里介绍使用STM32内部flash来保存数据的方法。在这里我使用STM32F103C8T6这款芯片做介绍。flash大小64K。本例子0x08000000~0x8003000作为bootloader使用,0x08003000~0x0800C000作为程序存放地址,0x0800C000~0x0800FFFF作为本例子的数据存放区域。
2、stm32程序里定义的数组是存到Flash里还是SRAMARM芯片复位后都是从0x00000004地址启动。STM32会转入一段自己的bootloader。然后根据BOOT引脚,选择启动位置。如果是FLASH则跳转到0x08000000(不知道地址有没记错)执行。程序一般指定FLASH的地址是链接地址(ARM使用绝对地址,运行和链接地址必须一致)。数组分2类,用const标示的常量数组,普通数组。
普通数组位于堆,一般是RAM的低地址往上生长。数组的初值存在FLASH中,即RODATA段,开机时通过一段程序(通常是汇编),拷贝到地址的RAM中。如果数组没给初值,会通过bss段全部清成0。如果是用KEIL、IAR等不用关心这些。因为这些设置建立工程时候都已经做好了(链接地址
除非注明,文章均由 白起网络 整理发布,欢迎转载。