1. 嵌入式系统的编译大致流程为 CFE->config->rootfs->kernel,也是编译后生成的image的结构,烧录到flash中之后,上电最先启动的是CFE,首先CFE必须认识falsh的类型。
kernel (Linux内核) |
rootfs (Flash文件系统) |
config (可选信息) |
bootloader (CPU启动后加载) |
2. 为bcmCHIP_ID的CFE添加一颗心的flash的过程中,主要设计两个文件
1) cfe文件夹下的shared\opensource\flash\spiflash.c
2) 与target目录同在的shared目录下的opensource\flash\spiflash.c
3. 修改这两个文件的原因
修改2.1是因为,首先编译CFE,
在要生成cfe的bin:cfeCHIP_ID.bin,
cd cfe/build/broadcom/bcm63xx_rom
make BRCM_CHIP=CHIP_ID clean
make BRCM_CHIP=CHIP_ID
再将生成的bin文件copy到target\cfe中,这样修改的cfe633x.bin才能生效
修改2.2的原因,在编译的时候会变异根目录下的hared\opensource\flash\spiflash.c,这会将flash的 种类用到后面的应用上
4. 最后在编译整个项目
小结:
#make Project clean
make PROFILE=96XXX clean
#make cfe
cd cfe/build/broadcom/bcm63xx_rom/
make BRCM_CHIP=CHIP_ID clean
make BRCM_CHIP=CHIP_ID
#copy cfe.bin to target/cfe
cp cfeCHIP_ID.bin ../../../targets/cfe
cd ../../../../
#make project
make PROFILE=profile_id
附:spiflash.c修改方法
1. add manufacturer ID
#define MXICPART 0xC2
2. add MXICFlash‘s device ID
#define ID_MX25L1606E
这两个都是Datasheet中定义的
3. 在SPI_FLASH_DEVICES中添加对应关系
{SPI_MAKE_ID(MXICPART,IDMX25L1606E,"MX25L1606E")}
4. 在spi_flash_init中添加对应的响应
case MXICPART:
flashFamily = FLASH_AMD;
sectorsize = SECTOR_SIZE_64K;
switch((unsigned char)(device_id & 0x00ff))
{
case ID_MX25L1606E:
numsector = 32; /*flash size*/
break;
}
break;
5. 最后在short_spi_get_device_id中找到对应组修改
if( **** || buf[0] == MXICPART)
OK 结束
阅读(2976) | 评论(1) | 转发(0) |