Image
Image

舒伯特玫瑰

+ 关注

粉丝 2     |     主题 53     |     回帖 266

小华半导体芯片启动文件详细讲解
2023-6-26 13:24
  • 小华半导体
  • 41
  • 2227
  如果没有定义__MICROLIB,则采用双段存储器模式,且声明标号__user_initial_stackheap具有全局属性,让用户 ...  
  ......  
  首先判断是否定义了__MICROLIB,如果定义了这个宏,则赋予标号__initial_sp(栈顶地址)、__heap_base(堆 ...  
  ALIGN:对指令或者数据存放的地址进行对齐,后面会跟一个立即数,缺省表示4字节对齐。 ...  
  6. 用户堆栈初始化  
  5. 中断服务程序 再下面的代码就是中断服务程序,太长了就不粘贴了。启动文件已经帮我们写好所有中断的服 ...  
  ......  
  ......  
  ......  
  值得注意的是上面有一段操作R0和R1寄存器的代码,这段代码是什么意思呢?查询手册,找到这个0x40050804的地 ...  
  ......  
  __main:一个标准的C库函数,主要作用是初始化用户堆栈,并在函数的最后调用main函数进入C语言世界。这就是 ...  
  System Init():一个标准的库函数,在system_hc32f460.c这个库文件中定义。其主要作用是配置系统时钟,这里 ...  
  WEAK:表示弱定义,如果外部文件优先定义了该标号,则首先引用该标号,如果外部文件没有声明,也不会出错。 ...  
  复位子程序是系统上电后第一个执行的程序,调用System Init函数初始化系统时钟,然后调用C库函数_mian,最 ...  
  ......  
  定义一个名称为.text的代码段,只读。  
  4. 复位程序 AREA |.text|, CODE, READONLY  
  __Vectors为向量表起始地址,__Vectors_End为向量表结束地址,两个相减即可算出向量表大小。向量表从Flash ...  
  向量表的代码比较长,占据了启动代码的大部分篇幅。  
2
3
近期访客