- 博客(6)
- 收藏
- 关注
原创 ARM芯片内部堆栈的理解及MAP文件的查看
STM32再启动的时候RAM首先分配给使用到的全局变量,及调用库占用的一些数据(不太清楚是什么数据),然后再将剩余的空间分配给Heap和stack。 ****以下是网上关于Heap和Stack的说:****(1)栈区(stack):由编译器自动分配和释放,存放函数的参数值、局部变量的值等,其操作方式类似于数据结构中的栈。(2)堆区(heap):一般由程序员分配和释放,若程序员不释放,程序结束时可能由操作系统回收。分配方式类似于数据结构中的链表。 Malloc函数分配的地址在堆区。(3)全局区
2021-03-12 20:30:26
2030
原创 在ARM芯片中使用打印函数总结
**在ARM芯片中使用打印函数总结:**在使用的stdio.h库可以找到对应的函数原型1、printf函数原型:#pragma __printf_argsextern _ARMABI int printf(const char * __restrict /format/, …) attribute((nonnull(1)));*即:printf(const char format,…);发送format输出到标准输出例子:printf(“Copying Marker %04X and Da
2021-03-12 20:14:33
1863
原创 linux开发中常用ARM汇编总结
一、汇编语句的格式label:instruction @ commentlabel 即标号,表示地址位置,有些指令前面可能会有标号,这样就可以通过这个标号得到指令的地址,标号也可以用来表示数据地址。注意 label 后面的冒号“:”,任何以冒号“:”结尾的标识符都会被认识是一个标号。instruction 即指令,也就是汇编指令或伪指令。@符号,表示后面的是注释,就跟 C 语言里面的“/”和“/”一样,其实在 GNU 汇编文件中我们也可以使用“/”和“/”来注释。comment 就是注释内容。例
2020-05-31 21:47:26
259
原创 STM32芯片IAP升级机制详解
一、先了解ICP和ISP、IAP之间的区别:1、 ISP(In System Programing 在系统编程)的实现相对要简单一些,一般通用做法是内部的存储器可以由上位机的软件通过串口来进行改写。对于单片机来讲可以通过SPI或其它的串行接口接收上位机传来的数据并写入存储器中。所以即使我们将芯片焊接在电路板上,只要留出和上位机接口的这个串口,就可以实现芯片内部存储器的改写,而无须再取下芯片。例如,我们开始接触到的STC51单片机的程序下载方式(点击上位机下载----->复位(断电)----->
2020-05-26 10:08:08
2639
5
原创 好的函数总结
1、数组的循环左移Void Leftshift(int *s,int n,int t)//*s输入的数组,n数组的大小,t左移的字节数{int i,tmp;tmp=s[0];for(;t>0;t–){tmp=s[0];for(i=0;i<n-1;i++){s[i]=s[i+1];}s[n-1]=tmp;}}2、数组的循环右移void ReghtShift(int *arr,int N,int K)//*arr输入的数组,N数组的大小,K右移字节数{while(
2020-05-18 22:28:06
436
原创 STM32的Flash地址是0x08000000,从0x00000000不可以?
这里写自定义目录标题为什么STM32从Flash地址0x08000000的启动而不是0x00000000?这是STM32F103ZE芯片存储空间的地址映射关系图。在MDK编译程序设置ROM和RAM地址时候发现:IROM1为片上程序存储器,即片上集成的Flash存储器,对该处理器Flash大小为512KB,即0x80000 地址区间为0x8000000~0x0807FFFFIRAM1为片上数据存储器,即片上集成的SRAM存储器,对该处理器RAM大小为64KB,即0x10000 地址区间为0x
2020-05-17 23:10:20
12517
7
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人