initdata段使用方式
initdata段
属于程序中的特殊数据段,用于存放初始化数据
在程序启动时由加载器
自动加载到内存
一般都是引导程序结构体——现阶段我们项目使用的方式,用于加载某个分区后,执行该分区代码。
技术实现
通过GCC的__attribute__((section(".initdata")))显式指定
具有以下内存特性:
位置无关(PIC)设计
通常位于只读存储器(ROM)区域
生命周期覆盖整个程序运行期
attribute((section(".initdata")))
const struct flash_params nor_config = {…};
区别
段名 | 生命周期 | 典型内容 | 可修改性 |
---|---|---|---|
.initdata | 程序全程有效 | 硬件配置参数 | 只读 |
.data | 程序全程有效 | 全局变量 | 可写 |
.bss | 程序全程有效 | 未初始化变量 | 可写 |
.init | 仅启动阶段有效 | 初始化函数指针数组 | 只读 |
具体使用方法
从flash copy ram中后。
指向ram开的,然后强制类型转化成固定类型,比如elf格式
然后找到entry进行执行。或者自己搞的定义进行执行。
最终执行了期望启动程序。