C118 免按开机自动加载固件-阿里云开发者社区

开发者社区> 开发与运维> 正文

C118 免按开机自动加载固件

简介:

最近无事,研究了按按钮开机的功能;功能的起初是参考了别人的系统是怎么做免开机加载固件的.

一、原理:

1.c118 原生loader部分代码是没有源代码的,它上电只需要按开机键然后系统就会起来.

2.原生loader起来后,加载bb里面的loader .  BBloader就会接管系统所有的interrupt

3.只要控制bbloader reset系统,c118 就会跑原生的loader,然后linux端用oscomo后台执行加载固件的命令,系统就会自动加载固件;

二、需要解决的问题;

1.怎么让机器一上电,就自动起来

  解决办法:把开机键用焊锡连接起来来.

2.开机键连接起来后,bbloader里面一直有问题.

  这个问题我研究了bbloader起来后,系统里面其它按键好像不会有问题,但是power就有问题.仔细研究代码,发现对power部分的代码做了特殊处理,power key的代码只要有interrupt就会过滤的press pressed几种状态.power 只会有一种状态,而且按了后,等待释放驱动里面就调用了poweroff.

  所以只需修改代码流程,把power键屏蔽,把power off函数调用去掉即可;

3.怎么让系统重启;

  测试过,系统重启只需要watchdog这个定时器;

  参考这个命令osmload reset,查看代码发现reset的时候,给loader发了reset消息,然后bbloader回复一ok 的msg.然后就直接调用了驱动里面的watchdog.

  系统就重启了.

三、还需要解决的问题.

上面所有的都在bbloader里面做的处理,但是没在layer1里面处理。

bbloader 和layer1的区别在于,layer1 init的时候打开了中断,bbloader init的时候禁用了所有中断,测试过程中,发现不禁用所有中断,watchdog 只会关闭系统,但是不会自动重启.

sigline.gif 
本文转自 K1two2 博客园博客,原文链接:http://www.cnblogs.com/k1two2/p/5159208.html  ,如需转载请自行联系原作者

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

分享:
开发与运维
使用钉钉扫一扫加入圈子
+ 订阅

集结各类场景实战经验,助你开发运维畅行无忧

其他文章