C语言中$$如和理解
Prepare_Copy((uint32_t *)&Load$$RW_IRAM1$$Base,(uint32_t *)&Image$$RW_IRAM1$$RW$$Base,(uint32_t)&Image$$RW_IRAM1$$RW$$Length);
Prepare_Zero((uint32_t *)&Image$$RW_IRAM1$$ZI$$Base,(uint32_t)&Image$$RW_IRAM1$$ZI$$Length);
谁帮我看看中间的$$什么意思,怎么理解,谢谢
[解决办法]
没什么意思,这几个是编译器定义的符号地址变量,用$$不过是让这个符号地址看起来特殊一点
Load$$RW_IRAM1$$Base 应该是有初始化值的全局变量区(即程序段中的RW段)的初始化值存放地址
Image$$RW_IRAM1$$RW$$Base 应该是表示有初始化值的全局变量的执行地址
Image$$RW_IRAM1$$RW$$Length 应该是有初始化值的全局变量所在区的长度
Prepare_Copy函数完成的功能就是将有初始化值的全局变量的初始化值放到全局变量的执行地址内。
Image$$RW_IRAM1$$ZI$$Base是没有初始化值的全局变量区的首地址,一般称为(ZI段)
Image$$RW_IRAM1$$ZI$$Length是ZI段的长度。
Prepare_Zero的作用就是将ZI段空间清0.
在许多环境下,用户是不用做这些操作的,编译器在链接程序时会自动在进入main函数之前加入汇编代码实现上述操作。
关于程序分段(默认一般分为代码段,RO段,RW段,ZI段)的详细说明,自己去百度一下吧。