u-boot移植随笔:自定义u-boot命令点灯

前几天一不小心在CSDN论坛上发帖散分,同时许诺完成点灯就结账,经过努力,终于可以在u-boot的shell中输入自定义的命令来点灯了。下面简单讲一下,但不想深入讲解原理。

网上很多教程都是在start.s中使用汇编来点灯,这种方法是可以的。但boss说这样不好,因为这是直接操作寄存器的。而网上很多资料都说要注释掉coloured_LED_init和red_LED_on这两个函数。而我偏偏想用这两个函数来实现点灯。——毕竟人家原来就有了的。在研究这个方法的同时,也了解了weak链接,学到一点东西,但自己实现起来,却又不可以!无论怎么捣鼓,那几个灯就是不按自己程序中写的那样点亮!后来实在没招了,只好使出绝招了。

那就是:自定义u-boot命令来点灯!同时学习一下如何添加自定义的命令。

u-boot中已经有了2440的GPIO结构体——s3c24x0_gpio,也有“宏函数”获取IO结构体的地址——s3c24x0_get_base_gpio(),一切只等我拿来使用了。本来想在common目录下建立一个cmd_led.c文件的,但这样可能不太好,后来就直接在smdk2440.c里面定义led函数,在定义s3c24x0_get_base_gpio函数的头文件所在的目录新建s3c2440.h头文件,声明led函数。这样虽然不太好,但目前只是作为测试,亦无妨了。

有了自定义的函数,再填充U_BOOT_CMD宏就可以了。这个宏有6个部分,分别是u-boot shell中的命令(就是我们敲的命令,如flinfo等等)、最大参数,重复次数(?)、命令实现函数、使用方法、帮助。命令实现函数形式为

int do_foo(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])

至于为什么这样,看U_BOOT_CMD就清楚了。

点灯程序参考了以前写的LED驱动程序,顺序测试没有任何问题,但测试多几次,却发现有严重的bug!比如让四个灯从1到4顺序点亮,没有问题,但先点4就出现问题了,灭灯同样也存在这样的问题,修改了很久,也没有解决,初步估计是移位造成的。——这些问题先留着,以后能解决就解决,万一哪一天我功力大增,一下子就解决了呢?

这里介绍一下移植u-boot的背景吧。

u-boot版本是2010.09,因为现在上官方ftp,最新稳定版本就是这个。开发板芯片是S3C2440,很早就买了,上面的NOR Flash原来是2MB的,现在换成了8MB(听说NOR flash很贵),封装是一样的。打算在上面移植u-boot、内核、根文件系统,NAND暂时不考虑。

换flash后,用H-JTAG也可以下载,但要修改配置文件,将其中的芯片型号修改为使用的那个,寄存器赋值可以参考2410的配置文件,下载工具和配置文件可以在H-JTAG官网论坛上找到。

这次移植,除了正常的移植之外,还打算深入研究一下u-boot的代码,以及这过程中涉及到的知识——比如研究.lds文件、生成的.map文件、内存分布、链接以及代码技巧及组织。。。。都对自己水平的提高有很大帮助。当作一个初出茅庐的人来说,不断学习是一件始终要坚持的事情。

昨天完成点灯、网络芯片程序修改,同时意识到版本控制的重要性,今天主要研究版本控制SVN的用法。

u-boot移植随笔:自定义u-boot命令点灯相关推荐

  1. Spring Boot——控制台LOGO自定义配置管理解决方案

    启动/关闭 设置banner mode为OFF关闭banner: import org.springframework.boot.Banner; import org.springframework. ...

  2. 快速开发一个自定义 Spring Boot Starter ,希望你也会

    来源:http://t.cn/Ai9li9fC 众所周知,Spring Boot由众多Starter组成,随着版本的推移Starter家族成员也与日俱增.在传统Maven项目中通常将一些层.组件拆分为 ...

  3. 自定义spring boot的自动配置

    文章目录 添加Maven依赖 创建自定义 Auto-Configuration 添加Class Conditions 添加 bean Conditions Property Conditions Re ...

  4. Spring Boot Actuator:自定义端点,其顶部具有MVC层

    Spring Boot Actuator端点允许您监视应用程序并与之交互. Spring Boot包含许多内置端点,您也可以添加自己的端点. 添加自定义端点就像创建一个从org.springframe ...

  5. u-boot移植随笔:让u-boot shell支持tab、命令历史

    u-boot移植随笔:让u-boot shell支持tab.命令历史 前两天一直在想一个问题,u-boot的shell怎么不支持命令自动补齐,命令历史呢?由于受linux的shell影响,只要其它的& ...

  6. 关于Spring Boot 2.x 自定义ErrorAttributes 不起作用的问题解决

    2019独角兽企业重金招聘Python工程师标准>>> 关于Spring Boot 2.x 自定义 ErrorAttributes 不起作用的问题解决 简介 Spring Boot ...

  7. spring boot整合SpringSecurity-03 自定义报错信息

    spring boot整合SpringSecurity 目录 spring boot整合SpringSecurity-01入门 spring boot整合SpringSecurity-02 基于Ser ...

  8. Spring Boot(十四):spring boot整合shiro-登录认证和权限管理

    Spring Boot(十四):spring boot整合shiro-登录认证和权限管理 使用Spring Boot集成Apache Shiro.安全应该是互联网公司的一道生命线,几乎任何的公司都会涉 ...

  9. 从零搭建一个 Spring Boot 开发环境!Spring Boot+Mybatis+Swagger2 环境搭建

    从零搭建一个 Spring Boot 开发环境!Spring Boot+Mybatis+Swagger2 环境搭建 本文简介 为什么使用Spring Boot 搭建怎样一个环境 开发环境 导入快速启动 ...

最新文章

  1. html提交表单到Servlet
  2. 常用24个方法有效优化ASP.NET的性能
  3. AlwaysOn只读路由配置
  4. 分布式程序的自动化回归测试
  5. 找到真爱了-sublime
  6. 得到按钮句柄后如何点集_RepPoint:可形变卷积生成的目标轮廓点集
  7. linux进程管理 pdf,高效与精细的结合--Linux的进程管理.pdf
  8. 老码农:这段代码绝了,切勿模仿!
  9. pwm控制舵机转动角度程序_舵机的内部结构及工作原理
  10. spring容器的懒加载
  11. CDlinux制作U盘启动盘,打造自己的口袋系统
  12. 洛谷P1880 石子合并(区间DP)(环形DP)
  13. 人大经济论坛SAS入门到高级教程
  14. HeadFirst设计模式-工厂模式(基于汽车工厂和手机工厂)
  15. java 生成word 分页_Java 插入分页符和分节符到Word文档
  16. C语言:歌德巴赫猜想:2000以内的正偶数(不包括2)都能够分解为两个质数之和
  17. 方框滤波(Box filtering)
  18. C语言指针进阶(1.一阶与二阶指针)
  19. 163net邮箱,对商务办公人士有哪些帮助?
  20. SAS常用基础代码例子-数据描述性分析

热门文章

  1. 李开复 —— 给中国学生的第四封信:大学四年应是这样度过
  2. 特斯拉计划在2023年推出2.5万美元电动汽车,或无方向盘
  3. 关于9999元的小米铁蛋,这里有一份官方解答
  4. P50发布!网友:滚筒洗衣机也能打电话了
  5. 华为旗下哈勃投资公司入股光刻机制造商科益虹源
  6. 卢伟冰:这几天黑稿明显增多了 法务又要忙了
  7. 三星发布110寸大屏MicroLED面板电视
  8. 为了生产iPhone 12,富士康连国庆节也没假放了
  9. 华强北二手手机卖不出去,闲鱼砸一亿现金帮扶
  10. 2699元!魅族16s Pro现货售罄:将加紧备货