0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

英创信息技术Linux主板系统还原方案

英创信息技术 来源:英创信息技术 作者:英创信息技术 2020-02-07 11:08 次阅读

为了满足用户对于系统安全性保障的要求,英创公司推出了针对Linux主板的系统还原方案,该方案依靠一个外部存储器件,可以使用U盘或者TF卡。用户只需要将英创公司提供的内核、文件系统镜像文件和用户程序拷贝到U盘或者TF卡中就可以了,U盘和TF卡需要是fat32文件系统格式。用户可以通过英创公司提供的库文件,在应用程序中设置u-boot的参数来实现还原的方案,下面首先详细介绍整个流程:

bootloader阶段

主板启动后,作为Bootloader的u-boot会打开看门狗,并检查环境变量bootstate的值,默认情况bootstate的值为0,说明系统还原的功能没有启用。将bootstate的值设置为1就可以启用该功能。

同时用户可以设置允许的最大尝试启动次数bootnum,如果bootstate的值小于等于bootnum那么u-boot会将bootstate的值加1后进行正常启动,如果bootstate的值大于bootnum,说明连续启动(bootnum-1)次失败,u-boot开始进入还原的流程。通过对于bootnum的设置,可以防止板卡对于系统还原的误判,比如在启动中突发的异常断电等情况造没有正常启动完成,流程可参考下图:

u-boot流程

还原的固件可以通过U盘或者TF卡存放,u-boot中通过环境变量system-recovery来判断从哪一种设备中读取固件,system-recovery等于system-recovery-usb则u-boot会通过U盘进行还原,如果system-recovery等于system-recovery-sd则u-boot会通过TF卡进行还原,用户可以根据实际情况配置。

Kernel阶段

进入到kernel启动之后,系统的运行模式下会重新初始化并使能看门狗,如果系统启动正常,板卡在启动完成后,英创公司提供的程序boot_recovery会自行启动,检测u-boot中bootstate的值,如果大于bootnum,说明系统经过了还原,初始化程序会将U盘或者TF卡中存放的用户的应用程序和文件拷贝到/mnt/nandflash目录,然后将bootstate的值置为1(注意,需要拷贝的程序和文件必须放在U盘或者TF卡的update文件夹下)。如果检测到bootstate的值小于bootnum,那么说明板卡正常启动,将bootstate的值置为1后退出程序,执行正常启动过程。考虑到启动过程中可能会遇到断电或者供电不稳等特殊情况,造成板卡启动失败,可以将bootnum的值适当增大。最后系统会根据用户配置自动启动应用程序,这时需要用户的应用程序第一时间接管看门狗并开始喂狗,否则等到看门狗超时系统还是会重新启动。

如果遇到系统启动不正常的情况,不会执行到程序boot_recovery,所以bootstate的值不会改变,等待看门狗超时(60s)后,系统便会重启,反复尝试次(bootnum-1)次后,进入到还原流程,整个过程可参考下图:

Kernel流程

还原流程

当u-boot检测到bootstate的值大于等于bootnum,就会进入到还原流程。这时u-boot将根据配置读取U盘或者TF卡中的内核和文件系统镜像文件,擦除NandFlash对应的位置重新烧写进去,烧写完成后启动系统,为了防止烧写过程中出现意外情况,所以并没有修改bootstate的值,而是等到系统完全启动后执行程序boot_recovery中再来修改bootstate的值。

在板卡中英创公司通过专门的库librecovery.so,给用户提供了对系统还原参数的查询和设置接口,这样就能够自定义系统还原后的操作。ibrecovery.so中提供的接口函数为:

int recovery_config(int cmd, char *s);

可以根据cmd的值来执行不同的操作,具体定义如下:

#define GET_BOOT_STATE 0 //查询bootstate的值
#define SET_BOOT_STATE 1 //设置bootstate的值
#define SET_BOOT_MAXNUM 2 //设置最大启动次数
#define GET_BOOT_MAXNUM 3 //查询最大启动次数
#define SET_WAY_RECOVERY 4 //设置系统还原方式
#define GET_WAY_RECOVERY 5 //查询系统还原方式

下面通过boot_recovery中的部分代码来说明函数接口的使用,首先是查询bootstate的值,判断板卡是否使能系统还原,如果没有使能就退出:

recovery_config(GET_BOOT_STATE, buf);
if(!strlen(buf))
return 0;
i1 = atoi(buf);
printf("%d\n", i1);
if(!i1)
return 0;

如果使能就判断是正常启动还是进行了系统还原,如果进行了系统还原,就根据系统还原的方式,将U盘或者TF卡中update文件夹的内容拷贝到/mnt/nandflash中,并且把bootstate的值设置为1:

recovery_config(GET_BOOT_MAXNUM, buf);
if(i1 > (atoi(buf) + 1))
{
recovery_config(GET_WAY_RECOVERY, buf);
s = strstr(buf, "usb");
if(s != NULL)
system("cp /mnt/usb1/update/* /mnt/nandflash/ -r");
s = strstr(buf, "sd");
if(s != NULL)
system("cp /mnt/sdcard/update/* /mnt/nandflash/ -r");
}
sprintf(buf, "%d", 1);
recovery_config(SET_BOOT_STATE, buf);

如果用户有一些需要自行设置的参数,可以在应用程序中进行设置,比如最大的尝试启动次数和系统还原的方式,都可以在应用程序的开始设置一遍。

如果对此方案感兴趣的客户,可以直接和英创的工程师连续,索取相关文件和程序。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • Linux
    +关注

    关注

    87

    文章

    11304

    浏览量

    209524
  • 嵌入式主板
    +关注

    关注

    7

    文章

    6085

    浏览量

    35342
收藏 人收藏

    评论

    相关推荐

    飞腾助力首届教育信息技术应用创新大赛圆满落幕

    近日,由中国教育技术协会主办,教育部教育管理信息中心教育信实验室、公安部第三研究所、中国电子工业标准化技术协会信工委会支持,北京航空航天
    的头像 发表于 12-24 09:57 104次阅读

    有方科技参编的信息技术团体标准发布

    近日,有方科技参编的《信息技术产品供应链成熟度 共性指标 第1部分:企业背景评价》《信息技术产品供应链成熟度 共性指标 第2部分:技术掌控评价》《信息技术产品供应链成熟度 共性指标 第
    的头像 发表于 12-23 10:44 121次阅读

    龙芯中科助力2024首届教育信息技术应用创新大赛成功举办

    近日,2024首届教育信息技术应用创新大赛在北京航空航天大学成功举办。本次大赛由中国教育技术协会主办,教育信实验室、公安部第三研究所、中国电子工业标准化技术协会信
    的头像 发表于 12-19 17:02 220次阅读

    拓维信息参与牵头组建!长沙新一代信息技术产教联合体正式获批

    的长沙新一代信息技术产教联合体成功获批,为长沙市信息技术产业发展注入了新的活力。图/《2024年长沙市市级市域产教联合体名单》长沙新一代信息技术产教联合体将依托龙头企
    的头像 发表于 12-07 01:06 369次阅读
    拓维<b class='flag-5'>信息</b>参与牵头组建!长沙新一代<b class='flag-5'>信息技术</b>产教联合体正式获批

    linux是实时系统还是分时操作系统

    系统就难以满足实时性需求,但是目前linux社区已经增加了较多版本的实时性补丁,给linux内核打上实时补丁后其实时性会得到大幅度提升,那么我们一起来看看两者的区别。 如下分享一下:“linu
    的头像 发表于 11-11 11:43 472次阅读

    中科达荣获2024年软件和信息技术服务优秀企业

    及前百家企业”名单。中科达凭借非凡的技术实力与持续的创新能力,成功入选“2024年度软件和信息技术服务竞争力百强企业”以及“2024年软件和信息技术服务优秀企业”。
    的头像 发表于 10-30 11:44 485次阅读

    国产化背景下的工控主板发展现状

    ,是信息技术应用创新产业的简称,于2016年“信工委会”(信息技术应用创新工作委员会)提出,目的就是要推动我们国内软硬件关键技术的研发
    的头像 发表于 09-21 16:15 404次阅读

    梯度科技入选2023年信息技术应用创新解决方案名单

    日前,工业和信息化部网络安全产业发展中心(工业和信息化部信息中心)在天津举办2024信息技术应用创新发展大会暨解决方案应用推广大会。会上正式
    的头像 发表于 09-09 16:29 433次阅读

    兆芯金融方案入选工信部2023年信息技术应用创新典型解决方案

    近日,由工信部网络安全产业发展中心等主办的2024信息技术应用创新发展大会暨解决方案应用推广大会在天津、浙江、福建、山东四地联动同步召开,会上公布了2023年信息技术应用创新解决方案
    的头像 发表于 08-05 16:12 683次阅读

    龙芯中科“基于国产芯片级密码安全的新一代信云解决方案”入选2023年工信部信典型案例

    近日,由工业和信息化部信息技术发展司和多地工信部门联合组织的2024信息技术应用创新发展大会暨解决方案应用推广大会在天津成功举办。大会现场,龙芯中科“基于国产芯片级密码安全的新一代信
    的头像 发表于 07-22 15:34 1074次阅读
    龙芯中科“基于国产芯片级密码安全的新一代信<b class='flag-5'>创</b>云解决<b class='flag-5'>方案</b>”入选2023年工信部信<b class='flag-5'>创</b>典型案例

    智慧医院信息化建设方案

    智慧医院 信息化建设方案是医疗机构实现数字化转型、提升医疗服务水平的重要举措。通过整合信息技术、数据管理、智能化系统等资源,智慧医院信息化建
    的头像 发表于 07-17 14:17 1010次阅读

    翼辉信息入选2023年信息技术应用创新解决方案名单

    近日,2023 年(第五届)信息技术应用创新解决方案公布遴选名单,历经资格初审、技术中评、区域评议、终评预审,翼辉以“面向工业领域嵌入式操作系统 SylixOS 解决
    的头像 发表于 04-28 11:37 560次阅读
    翼辉<b class='flag-5'>信息</b>入选2023年<b class='flag-5'>信息技术</b>应用创新解决<b class='flag-5'>方案</b>名单

    芯盾时代中标西安西热电站信息技术有限公司!

    芯盾时代中标西安西热电站信息技术有限公司!芯盾时代基于完整的身份安全产品体系,增强客户的业务系统、网络设备和安全设备等认证安全强度
    的头像 发表于 04-09 11:32 513次阅读

    龙芯中科三项信方案入围工信部2023年信息技术应用创新应用示范案例名单

    近日,工业和信息化部通报了2023年信息技术应用创新解决方案征集遴选结果,本次共评选出典型解决方案173个、应用示范案例83个、单项创新案例64个。
    的头像 发表于 03-07 16:45 935次阅读
    龙芯中科三项信<b class='flag-5'>创</b><b class='flag-5'>方案</b>入围工信部2023年<b class='flag-5'>信息技术</b>应用创新应用示范案例名单

    软通动力与捷技术签订战略合作协议

    近日,软通动力信息技术(集团)股份有限公司(以下简称“软通动力”)与宁波捷技术股份有限公司(以下简称“捷技术”)正式签订战略合作协议,并
    的头像 发表于 02-03 16:35 1120次阅读