主题中讨论的其他器件:HALCOGEN
我有一个结构。
struct TelemPackStruct{
uint32_t tmMarker;
float32_t wx;
float32_t wy;
float32_t wz;
float32_t M1;
float32_t m2;
float32_t m3;
float32_t q0;
float32_t Q1;
float32_t Q2;
float32_t Q3;
struct BinData
uint32_t 秒 :32;
uint32_t 指示 :8;
uint32_t 模式 :8;
uint32_t modeArea :8;
}binDataTM;
};
我需要每秒在 EMIF 中使用不同的值保存这种类型的结构。
我 在 Halcogen 中启用了 EMIF (SDRAM、async1、2、3、pinmux、驱动程序)。
我修改了链接器文件:
内存 { 引导程序(X):origin=0x00000000 length=0x00000020 内核(RX):origin=0x00000020 length=0x00008000 FLASH0 (RX):origin=0x00008020 length=0x001F7FE0 FLASH1 (RX):origin=0x00200000 length=0x00200000 堆栈(RW):origin=0x08000000 length=0x00000800 Kram (RW):origin=0x08000800 length=0x00000800 RAM (RW):origin=(0x08000800+0x00000800) length=(0x0007F800 - 0x00000800) /*用户代码开始(2)*/ SDRAM (RXW):origin=0x8000000000 length=0x007FFFE0 /*用户代码结束*/ }
和
部分
{
.intvecs:{}>向量
闪存受保护区域中的/* FreeRTOS 内核*/
.kernelTEXT align(32):{}>内核
.cinit align(32):{}>内核
.pinit align(32):{}>内核
/*将其余代码转换为用户模式闪存区域*/
.text align (32):{}> FLASH0| FLASH1
.const align (32):{}> FLASH0| FLASH1
/* RAM 受保护区域中的 FreeRTOS 内核数据*/
.kernelbss:{}>Kram
.kernelHEAP:{}> RAM
.bss :{}> RAM
.data :{}>RAM
/*用户代码开始(4)*/
telem:{}>SDRAM
/*用户代码结束*/
}
我定义了一组结构
#define NUM_OF_PACK1024
struct TelemPackStruct勘 测[NUM_OF_PACK]__attribute__((section (".telem")));
我发现的问题如下。
__attribute__(((section(".telem"))) volatile struct TelemPackStructure[NUM_OF_PACK];
void foo (){
volatile struct TelemPackStructtmToRead;
//填充 tmToRead
遥测[0]=tmToRead;
//telemeting[0].q1=tmToRad.q1;解决相同的问题
}
当我尝试写入存储在 EMIF 中的遥测[0]时,它只写入一个变量(结构中不是单个变量),并将其写入整个 SDRAM (包括)。



