当前位置: 首页 > news >正文

慈善组织网站建设方案百度如何优化

慈善组织网站建设方案,百度如何优化,360建筑网忘记密码怎么办,石家庄百成网络系列文章目录 1.连续打卡第一天:提前对CPK_RA2E1是瑞萨RA系列开发板的初体验,了解一下 2.开发环境的选择和调试(从零开始,加油) 3.欲速则不达,今天是对RA2E1 基础知识的补充学习。 4.e2 studio 使用教程 5.…

 

系列文章目录

1.连续打卡第一天:提前对CPK_RA2E1是瑞萨RA系列开发板的初体验,了解一下

2.开发环境的选择和调试(从零开始,加油)

3.欲速则不达,今天是对RA2E1 基础知识的补充学习。

4.e2 studio 使用教程

5.Keil配置使用(使用 RASC 生成 Keil 工程)

6.Keil配置使用(使用 RASC 生成 Keil 工程)

7.(电脑重装系统)学习RA产品家族选型手册

8.问题解决、学习RA寄存器、用寄存器的方式点亮第一个LED灯。

9.继续学习RA寄存器

10.FSP固件库开发及FSP配置详解。

11.FSP固件库开发点亮第一个灯。

12.FSP固件库开发按键输入检测控制LED灯闪烁


文章目录

系列文章目录

前言

一、启动文件是什么?

二、启动文件的详解

1.复位程序

2.栈区初始化

3.堆区初始化

4.中断向量表初始化

5. SystemInit()

6.使能FPU

总结

你能找到理由难过,也一定能找到理由快乐。


前言

        今天学习理论知识,启动文件详解。本文参考野火官方文件。


一、启动文件是什么?

        启动文件是系统上电复位后执行的第一个程序。

  1. 初始化堆栈。

  2. 使能FPU(float-point unit,即浮点单元)。

  3. 定位中断向量表。

  4. 配置系统时钟。

  5. 启用CORTEX-M33栈监视器。

  6. 初始化C语言运行环境。

  7. 初始化变量SystemCoreClock,这个变量存放的是处理器时钟的频率。

  8. 初始化用于触发NVIC中断的ELC(Event Link Controller)事件。

  9. 初始化IO口

二、启动文件的详解

1.复位程序

如stm32的复位程序:

void Sys_Soft_Reset(void)// 软重启
{
SCB->AIRCR =0X05FA0000|(u32)0x04;
}void SoftReset(void)
{ __set_FAULTMASK(1); // 关闭所有中端
NVIC_SystemReset(); // 复位}

如RA2E1的复位程序:

void Reset_Handler (void)
{/* 使用BSP对系统进行初始化. */SystemInit();/* Call user application. */main();while (1){/* Infinite Loop. */}
}

        这是系统上电或复位后执行的第一个程序,使用BSP对系统进行初始化,随后通过main函数进入用户代码。 BSP负责使MCU从复位状态进入到用户的应用程序。在到达用户的应用程序之前,BSP设置栈、堆、时钟、中断、C语言运行环境和堆栈监视器。

2.栈区初始化

/* Main stack */
static uint8_t g_main_stack[BSP_CFG_STACK_MAIN_BYTES + BSP_TZ_STACK_SEAL_SIZE]
BSP_ALIGN_VARIABLE(BSP_STACK_ALIGNMENT)   //宏展开后为“__attribute__((aligned(8)))”
BSP_PLACE_IN_SECTION(BSP_SECTION_STACK);  //宏展开后为“__attribute__((section( ".stack"))) __attribute__((__used__))”

        栈是一种先进后出的内存结构,存放函数的参数值、返回值、局部变量等,在程序运行过程中实时加载和释放。 如果代码中使用的局部变量和函数嵌套较多,则需要增加栈区的大小,需要注意的是, 栈区分配大小不能超过RAM的大小。


3.堆区初始化

/* Heap */
#if (BSP_CFG_HEAP_BYTES > 0)  //若分配堆区大小为0则不进行初始化BSP_DONT_REMOVE static uint8_t g_heap[BSP_CFG_HEAP_BYTES]
BSP_ALIGN_VARIABLE(BSP_STACK_ALIGNMENT)  //宏展开后为“__attribute__((aligned(8)))”
BSP_PLACE_IN_SECTION(BSP_SECTION_HEAP);  //宏展开后为“__attribute__((section(".heap"))) __attribute__((__used__))”
#endif

        堆没有栈那样先进后出的顺序,用于动态内存分配,一般由程序员使用malloc和free进行分配和释放。 BSP_CFG_HEAP_BYTES用于配置堆区大小,当这个宏定义为0,则不对堆区进行初始化。 由于MCU中可用的片上SRAM相对较少,且缺乏内存保护,这意味着必须非常小心地控制堆的使用,以避免内存泄漏、溢出和试图过度分配。 因此默认堆区大小被设置为0。如果用户需要(例如一些C标准库函数需要使用堆), 可以在FSP Configuration中“BSP”属性栏的“RA Common”中通过修改“Heap size”来设置堆区大小。


4.中断向量表初始化

/* Vector table. */
BSP_DONT_REMOVE const exc_ptr_t __Vectors[BSP_CORTEX_VECTOR_TABLE_ENTRIES]
BSP_PLACE_IN_SECTION(BSP_SECTION_FIXED_VECTORS) =
{(exc_ptr_t) (&g_main_stack[0] + BSP_CFG_STACK_MAIN_BYTES), /*      Initial Stack Pointer     */Reset_Handler,                                             /*      Reset Handler             */NMI_Handler,                                               /*      NMI Handler               */HardFault_Handler,                                         /*      Hard Fault Handler        */MemManage_Handler,                                         /*      MPU Fault Handler         */BusFault_Handler,                                          /*      Bus Fault Handler         */UsageFault_Handler,                                        /*      Usage Fault Handler       */SecureFault_Handler,                                       /*      Secure Fault Handler      */0,                                                         /*      Reserved                  */0,                                                         /*      Reserved                  */0,                                                         /*      Reserved                  */SVC_Handler,                                               /*      SVCall Handler            */DebugMon_Handler,                                          /*      Debug Monitor Handler     */0,                                                         /*      Reserved                  */PendSV_Handler,                                            /*      PendSV Handler            */SysTick_Handler,                                           /*      SysTick Handler           */
};

        宏“BSP_PLACE_IN_SECTION(BSP_SECTION_FIXED_VECTORS)”展开后为“__attribute__((section(“.fixed_vectors”))) __attribute__((__used__))”。 意为将表放到名为“.fixed_vectors”的输入段中,并且即使不被使用,编译器也不会警告。


5. SystemInit()

void SystemInit (void)
{
#if __FPU_USED/* Enable the FPU only when it is used.* Code taken from Section 7.1, Cortex-M4 TRM (DDI0439C) *//* Set bits 20-23 (CP10 and CP11) to enable FPU. */SCB->CPACR = (uint32_t) CP_MASK;
#endif#if BSP_TZ_SECURE_BUILDuint32_t * p_main_stack_top = (uint32_t *) __Vectors[0];*p_main_stack_top = BSP_TZ_STACK_SEAL_VALUE;
#endif.............. //由于篇幅所限,省略中间代码/* Call Post C runtime initialization hook. */R_BSP_WarmStart(BSP_WARM_START_POST_C);/* Initialize ELC events that will be used to trigger NVIC interrupts. */bsp_irq_cfg();/* Call any BSP specific code. No arguments are needed so NULL is sent. */bsp_init(NULL);
}

        这是MCU进入Reset_Handler后执行的第一个函数,正如函数的字面意思,用于初始化MCU和运行环境, 运行完这段代码后将由main进入用户的hal_entry函数,由于代码较长,下面将分为几个部分对代码进行分析。


6.使能FPU

#if __FPU_USED/* Enable the FPU only when it is used.* Code taken from Section 7.1, Cortex-M4 TRM (DDI0439C) *//* Set bits 20-23 (CP10 and CP11) to enable FPU. */SCB->CPACR = (uint32_t) CP_MASK;
#endif

        FPU(Float-Point Unit)支持单精度加、减、乘、除、乘、累加、平方根运算。它还提供了定点和浮点数据格式以及浮点常量之间的转换的命令。


总结

    对启动文件进行了一个整体的了解,感谢野火官方珍贵的资料,持续学习和努力,坚持不懈。


你能找到理由难过,也一定能找到理由快乐。

http://www.15wanjia.com/news/8527.html

相关文章:

  • 公司注销网站备案申请表教育培训机构推荐
  • 国内几个做外贸的网站镇江百度关键词优化
  • 哪些网站做二手挖机郑州千锋教育培训机构怎么样
  • 餐饮行业网站建设风格网络营销的八大能力
  • 网络优化网站建设学习电脑培训学校哪家最好
  • 合肥网站制作公司seo外包公司
  • 英语网站新增两个栏目seo 推广
  • 寻找做网站离我最近的广告公司
  • 国外源码网站宁德市中医院
  • 做外贸有哪些免费的网站有哪些在线资源搜索神器
  • 天津网站建设推广百度推广助手app下载
  • 免费学编程的app网站seo设计
  • 罗湖附近公司做网站建设哪家服务周到图片优化是什么意思
  • 自己制作的网站怎么发布北京本地网络推广平台
  • 地产公司网站建设kol合作推广
  • win7如何做网站服务器关键词完整版免费听
  • 电商网站开发视频教程网站建立的步骤
  • 一流高职院校建设专题网站各大网站提交入口网址
  • 网站先做移动站在做pc站可行吗宁波seo推广联系方法
  • o2o商城上的二级网站每日一则小新闻
  • python做网站还是数据库怎么进行seo
  • 长沙专业网络推广公司郑州怎么优化网站排名靠前
  • 有ip怎么用自己的主机做网站世界球队最新排名榜
  • 新疆生产建设兵团棉麻公司网站seo运营经理
  • 河北网站建设多少钱关于市场营销的培训课程
  • 其他公司盗用公司名做网站网址域名查询
  • 台州网站建设开发东莞网站关键词优化排名
  • 故宫文创产品搜索引擎优化论文3000字
  • 网站打开速度优化凡科网免费建站官网
  • 企业做外贸网站常用术语网络营销和网站推广的区别