怎么用bootloader 调用2个或者2个以上不通的应用程序。
工作空间为 C:Documents and SettingsAdministratorworkspace_32002
3.1.导入C: iCC3200SDK_1.1.0cc3200-sdkexampleapplication_bootloader
修改这个函数,启用不同的内核镜像:
#define IMG_BOOT_INFO “/sys/mcubootinfo.bin”
#define IMG_FACTORY_DEFAULT “/sys/mcuimg1.bin”
#define IMG_USER_1 “/sys/mcuimg2.bin”
#define IMG_USER_2 “/sys/mcuimg3.bin”
注:默认的镜像文件为 /sys/mcuimg1.bin,IMG_USER_1 对应的镜像文件为/sys/mcuimg2.bin
下面的函数为从 IMG_USER_1 即/sys/mcuimg2.bin文件启动。
static int CreateDefaultBootInfo(sBootInfo_t *psBootInfo)
{
//
// Set the status to no test
//
psBootInfo->ulImgStatus = IMG_STATUS_NOTEST;
//
// Check if factor default image exists
//
/* iRetVal = sl_FsGetInfo((unsigned char *)IMG_FACTORY_DEFAULT, 0,&pFsFileInfo);
if(iRetVal == 0)
{
psBootInfo->ucActiveImg = IMG_ACT_FACTORY;
return 0;
}*/
iRetVal = sl_FsGetInfo((unsigned char *)IMG_USER_1, 0,&pFsFileInfo);
if(iRetVal == 0)
{
psBootInfo->ucActiveImg = IMG_ACT_USER1;
return 0;
}
/* iRetVal = sl_FsGetInfo((unsigned char *)IMG_USER_2, 0,&pFsFileInfo);
if(iRetVal == 0)
{
psBootInfo->ucActiveImg = IMG_ACT_USER2;
return 0;
}*/
return -1;
}
3.2 uniflash设置镜像文件:
/sys/mcuimg.bin 对应的application_bootloader.bin(application_bootloader程序编译完会生成两个名的.bin文件,
注意下载时名字为application_bootloader.bin)
/sys/mcuimg1.bin 对应镜像1
/sys/mcuimg2.bin 对应镜像2
3.3 修改C: iCC3200SDK_1.1.0cc3200-sdkexampleapplication_bootloader的应用程序
使支持 /sys/mcuimg3.bin /sys/mcuimg4.bin 的镜像加载。
当然以后如果需要,可增加 /sys/mcuimg5.bin------.n.bin的镜像加载。
镜像文件即可是单片机程序镜像,也可是操作系统文件镜像
3.4 修改application_bootloader,增加IO口状态的读写功能。
简单修改可根据IO口状态加载镜像文件。
备份在ccs工程目录下。
3.5 发现读取GPIOA2端口的IO口状态,程序异常,读取GPIOA1的IO端口正常 :
GPIOA1_BASE 0x40005000 GPIOA2_BASE 0x40006000
而启动内存映射:
SRAM_CODE (RWX) : origin = 0x20000000, length = 0x37FF
SRAM_DATA (RWX) : origin = 0x20003800, length = 0x0800
也就是加载镜像的 地址为0X20004000.