1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > keil工程 freertos+emwin AC5编译器移植到AC6编译器

keil工程 freertos+emwin AC5编译器移植到AC6编译器

时间:2019-11-01 07:05:13

相关推荐

keil工程 freertos+emwin AC5编译器移植到AC6编译器

keil工程 freertos+emwin AC5编译器移植到AC6编译器

本文基于正点原子的rtos工程进行移植。

打开工程,将其更换为AC6编译器,然后点击编译

编译完成之后,如下图,可以看到有很多的错误。

首先按照下面这篇文章修改好之后,再次进行编译

keil工程 freertos AC5编译器移植到AC6编译器

可以看到这次的错误出现在malloc.c里面,原因是因为AC6编译器已经识别不了这些指令了。我们将以上错误更换下面的

//内存池(4字节对齐)__attribute__((aligned(4))) u8 mem1base[MEM1_MAX_SIZE];__attribute__((aligned(4))) u8 mem2base[MEM2_MAX_SIZE] __attribute__((section(".ARM.__at_0x68000000"))); //外部SRAM内存池__attribute__((aligned(4))) u8 mem3base[MEM3_MAX_SIZE] __attribute__((section(".ARM.__at_0x10000000"))); //内部CMM内存池//内存管理表u16 mem1mapbase[MEM1_ALLOC_TABLE_SIZE];//内部SRAM内存池MAPu16 mem2mapbase[MEM2_ALLOC_TABLE_SIZE] __attribute__((section(".ARM.__at_0X680C8000")));//外部SRAM内存池MAPu16 mem3mapbase[MEM3_ALLOC_TABLE_SIZE] __attribute__((section(".ARM.__at_0X1000F000")));//内部CCM内存池MAP//内存管理参数 const u32 memtblsize[SRAMBANK]={MEM1_ALLOC_TABLE_SIZE,MEM2_ALLOC_TABLE_SIZE,MEM3_ALLOC_TABLE_SIZE};//内存表大小const u32 memblksize[SRAMBANK]={MEM1_BLOCK_SIZE,MEM2_BLOCK_SIZE,MEM3_BLOCK_SIZE};//内存分块大小const u32 memsize[SRAMBANK]={MEM1_MAX_SIZE,MEM2_MAX_SIZE,MEM3_MAX_SIZE};//内存总大小

我将上面的各个块的地址计算出来然后加到新指令里面,暂时还没想到什么特别好的方法,然后我们在进行编译

可以看到错误明显的变少了。

再次进行工程编辑,把CC_ARM的宏定义取消,

可以看到编译成功。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。