u-boot移植随笔:自定义u-boot命令点灯
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命令点灯相关推荐
- Spring Boot——控制台LOGO自定义配置管理解决方案
启动/关闭 设置banner mode为OFF关闭banner: import org.springframework.boot.Banner; import org.springframework. ...
- 快速开发一个自定义 Spring Boot Starter ,希望你也会
来源:http://t.cn/Ai9li9fC 众所周知,Spring Boot由众多Starter组成,随着版本的推移Starter家族成员也与日俱增.在传统Maven项目中通常将一些层.组件拆分为 ...
- 自定义spring boot的自动配置
文章目录 添加Maven依赖 创建自定义 Auto-Configuration 添加Class Conditions 添加 bean Conditions Property Conditions Re ...
- Spring Boot Actuator:自定义端点,其顶部具有MVC层
Spring Boot Actuator端点允许您监视应用程序并与之交互. Spring Boot包含许多内置端点,您也可以添加自己的端点. 添加自定义端点就像创建一个从org.springframe ...
- u-boot移植随笔:让u-boot shell支持tab、命令历史
u-boot移植随笔:让u-boot shell支持tab.命令历史 前两天一直在想一个问题,u-boot的shell怎么不支持命令自动补齐,命令历史呢?由于受linux的shell影响,只要其它的& ...
- 关于Spring Boot 2.x 自定义ErrorAttributes 不起作用的问题解决
2019独角兽企业重金招聘Python工程师标准>>> 关于Spring Boot 2.x 自定义 ErrorAttributes 不起作用的问题解决 简介 Spring Boot ...
- spring boot整合SpringSecurity-03 自定义报错信息
spring boot整合SpringSecurity 目录 spring boot整合SpringSecurity-01入门 spring boot整合SpringSecurity-02 基于Ser ...
- Spring Boot(十四):spring boot整合shiro-登录认证和权限管理
Spring Boot(十四):spring boot整合shiro-登录认证和权限管理 使用Spring Boot集成Apache Shiro.安全应该是互联网公司的一道生命线,几乎任何的公司都会涉 ...
- 从零搭建一个 Spring Boot 开发环境!Spring Boot+Mybatis+Swagger2 环境搭建
从零搭建一个 Spring Boot 开发环境!Spring Boot+Mybatis+Swagger2 环境搭建 本文简介 为什么使用Spring Boot 搭建怎样一个环境 开发环境 导入快速启动 ...
最新文章
- html提交表单到Servlet
- 常用24个方法有效优化ASP.NET的性能
- AlwaysOn只读路由配置
- 分布式程序的自动化回归测试
- 找到真爱了-sublime
- 得到按钮句柄后如何点集_RepPoint:可形变卷积生成的目标轮廓点集
- linux进程管理 pdf,高效与精细的结合--Linux的进程管理.pdf
- 老码农:这段代码绝了,切勿模仿!
- pwm控制舵机转动角度程序_舵机的内部结构及工作原理
- spring容器的懒加载
- CDlinux制作U盘启动盘,打造自己的口袋系统
- 洛谷P1880 石子合并(区间DP)(环形DP)
- 人大经济论坛SAS入门到高级教程
- HeadFirst设计模式-工厂模式(基于汽车工厂和手机工厂)
- java 生成word 分页_Java 插入分页符和分节符到Word文档
- C语言:歌德巴赫猜想:2000以内的正偶数(不包括2)都能够分解为两个质数之和
- 方框滤波(Box filtering)
- C语言指针进阶(1.一阶与二阶指针)
- 163net邮箱,对商务办公人士有哪些帮助?
- SAS常用基础代码例子-数据描述性分析