1. 嵌入式系統(tǒng)的編譯大致流程為 CFE->config->rootfs->kernel,也是編譯后生成的image的結(jié)構(gòu),燒錄到flash中之后,上電最先啟動的是CFE,首先CFE必須認(rèn)識falsh的類型。
kernel (Linux內(nèi)核) |
rootfs (Flash文件系統(tǒng)) |
config (可選信息) |
bootloader (CPU啟動后加載) |
2. 為bcmCHIP_ID的CFE添加一顆心的flash的過程中,主要設(shè)計兩個文件
1) cfe文件夾下的shared\opensource\flash\spiflash.c
2) 與target目錄同在的shared目錄下的opensource\flash\spiflash.c
3. 修改這兩個文件的原因
修改2.1是因?yàn),首先編譯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的 種類用到后面的應(yīng)用上
4. 最后在編譯整個項目
小結(jié):
#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中添加對應(yīng)關(guān)系
{SPI_MAKE_ID(MXICPART,IDMX25L1606E,"MX25L1606E")}
4. 在spi_flash_init中添加對應(yīng)的響應(yīng)
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中找到對應(yīng)組修改
if( **** || buf[0] == MXICPART)
OK 結(jié)束
|