DSP

Boot Loader(Secondbootloader 调试)

2019-07-13 18:28发布

怎么用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.