[国嵌攻略][097][U-Boot新手入门]
嵌入式软件层次
1.Bootloader
2.Linux内核
3.文件系统
编译U-Boot
1.解压uboot
tar zxvf uboot.tar.gz
2.清除uboot
make distclean
3.配置uboot
make mini2440_config
4.编译uboot
ARCH指定处理器架构,CROSS_COMPLIE指明交叉工具链
make ARCH=arm CROSS_COMPLIE=arm-linux-
5.下载uboot
./dnw u-boot.bin 30000000
uboot命令
1.help:帮助命令
示例:
help 显示所有uboot支持的命令
2.printenv(print):查看环境变量
示例:
printenv(print) 显示所有环境变量
printenv(print) 环境变量名 显示指定的环境变量
3.setenv:添加、修改和删除环境变量
示例:
setenv new_name new_value 添加环境变量
setenv old_name new_value 修改环境变量
setenv old_name 删除环境变量
4.saveenv:保存环境变量
示例:
saveenv 保存所有环境变量到闪存
5.tftp:文件下载
示例:
setenv ethaddr 12:34:56:78:9A:BC 设置网卡地址
setenv ipaddr 192.168.1.230 设置开发板IP地址
setenv serverip 192.168.1.100 设置服务器IP地址
saveenv 保存环境变量
ping 192.168.1.100 测试是否能ping通tftp服务器
tftp 0x31000000 uImage 下载uImage到开发板的0x31000000位置
配置tftp服务器
vim /etc/xinetd.d/tftp 设置server_args=tftp服务器目录,disable=no
/etc/inid.d/xinetd restart 启动tftp服务器
netstat –a | grep tftp 查看tftp服务是否启动
6.bootm:执行程序
执行固定格式的2进制程序,固定格式是指加了相关信息头部的可执行程序。
示例:
bootm 0x31000000
7.md:内存查看
md采用十六进制和ASCII码两种形式来显示存储单元的内容。这条命令可以加长度标示符.b,.w和.l。
示例:
md 0x30000000 以十六进制显示内存数据
md.b 0x30000000 以字节进制显示内存数据
8.mm:内存修改
mm提供了一种互动修改内存数据的方法。它会显示地址和当前值,然后提示用户输入。如果输入了一个合法的十六进制数,那么这个新的值将会被写入该地址,然后提示输入下一个地址。如果没有输入任何值,只是按了一下回车,那么该地址的内容保存不变。如果想要结束输入,那么按空格后,再按回车。
mm 0x30000000 以十六进制修改内存数据
9.nand erase:擦除闪存
nand erase 闪存起始地址 擦除长度
示例:
nand erase 0x400000 0x500000 从闪存的4M位置处擦除5M大小的区域
10.nand write:写入闪存
nand write 内存起始地址 闪存起始地址 写入长度
示例:
nand write 0x31000000 0x400000 0x500000 把内存31000000位置写入5M到闪存4M位置
11.nand read:读取闪存
nand read 内存起始地址 闪存起始地址 读取长度
示例:
nand read 0x31000000 0x400000 0x500000 把闪存4M位置读取5M到内存31000000位置
12.设置自动启动
12.1.设置从闪存自动下载到内存,然后启动
示例:
setenv bootcmd nand read 31000000 400000 500000 \; bootm 31000000
saveenv
12.2.设置从网络自动下载到内存,然后启动
setenv bootcmd tftp 31000000 uImage \; bootm 31000000
saveenv
注意:多条命令用\;隔开,并且两边都要有空格
设置uboot启动Linux内核
1.查看环境变量
2.修改环境变量
setenv ethaddr 12:34:56:78:9A:BC
setenv ipaddr 192.168.1.230
setenv serverip 192.168.1.100
saveenv
3.测试网络连接
ping 192.168.1.100
4.网络下载内核
tftp 0x30008000 uImage
5.内核写入闪存
nand write 30008000 400000 500000
6.设置自动启动
setenv bootcmd nand read 30008000 400000 500000 \; bootm 30008000
saveenv
[国嵌攻略][097][U-Boot新手入门]的更多相关文章
- [国嵌攻略][099][Linux内核配置与编译]
为什么要配置内核 基于硬件和软件的需求选出需要的功能,去掉不要的功能. 内核配置的方法 make config:基于文本交互的配置. make menuconfig:基于图形菜单的配置. make m ...
- [国嵌攻略][098][Linux内核简介]
Linux系统架构 1.用户空间:应用程序.C函数库 2.内核空间:系统调用接口.内核.体系结构相关代码 Linux系统利用处理器不同的工作模式,使用其中的两个级别分别来运行Linux内核与应用程序, ...
- [国嵌攻略][068][tftp网络协议实现]
IP协议结构 UDP协议结构 TFTP协议结构 TFTP端口 读写请求端口: 69 其他请求端口:1024~65535 主程序 /*********************************** ...
- [国嵌攻略][045-046][一跃进入C大门]
[一跃进入C大门] 跳转方式 1.相对跳转:b或bl指令,通过计算两个地址之间的差值来给pc赋值相对跳转 2.绝对跳转:ldr指令,通过给pc直接赋值,完成绝对跳转 代码编写 1.在汇编代码中直接使用 ...
- [国嵌攻略][182][Sqlite嵌入式数据库移植]
数据库系统构成 在计算机系统中,保存数据的方式一般有两种: 1.普通文件方式 2.数据库方式 相比于普通文件方式,使用数据库来管理大批量数据具有更高的效率与安全性. 数据库系统一般由三个部分构成 1. ...
- [国嵌攻略][179][OpenSSL加密系统]
未加密传输的安全弊端 如果在网络传输中没有加密,就是以明文传输.传输的数据可以被抓包软件直接截获,并能读取里面的数据. 加密基本原理 1.对称加密 2.非对称加密 2.1.公钥私钥 公钥和私密要配对. ...
- [国嵌攻略][174][CGI快速入门-网页控制LED]
CGI程序(Common Gate Way Interface) 在服务器外部供服务器调用的程序,CGI程序与服务器配合后能让服务器完成更强大的功能. 1.浏览器通过HTML表单或超链接请求指向一个C ...
- [国嵌攻略][173][BOA嵌入式服务器移植]
1.解压boa嵌入式web服务 tar zxvf boa-0.94.13.tar.gz 2.进入src目录生成配置文件 ./configure 3.修改生成的Makefile CC=arm-linux ...
- [国嵌攻略][171][V4L2图像编程接口深度学习]
V4L2摄像编程模型 1.打开摄像头设备文件 2.获取驱动信息-VIDIOC_QUERYCAP 3.设置图像格式-VIDIOC_S_FMT 4.申请帧缓冲-VIDIOC_REQBUFS 5.获取帧缓冲 ...
随机推荐
- jQueryUI Autocomplete插件使用入门教程(最新版)---------转载
前言: jQuery,无需多作介绍,相信各位读者都应该接触或使用过了.jQuery UI,简而言之,它是一个基于jQuery的前端UI框架.我们可以使用jQuery + jQuery UI非常简单方便 ...
- Docker(六):Docker网络配置进阶
1.Docker集群网络配置之Weave Weave是Github上一个比较热门的Docker容器网络方案,具有非常良好的易用性且功能强大.仓库地址:https://github.com/weavew ...
- Python连接webstocker获取消息
简介(脚本都是根据网上资料改写) 此脚本主要是客户觉得webstcket不稳定,所以编辑一个脚本,不停的请求web服务器,当发生错误时,脚本自动退出(). 脚本内容 脚本一 # -*- coding: ...
- UWP 应用通知Notifications
之前说UWP 使用OneDrive云存储2.x api(二)[全网首发],微识别实现了上传下载的功能,那么为了给用户更上一层楼的体验,那就是在上传下载完成之后,弹出一通知Notifications. ...
- sql server 错误号大全
0 操作成功完成. 1 功能错误. 2 系统找不到指定的文件. 3 系统找不到指定的路径. 4 系统无法打开文件. 5 拒绝访问. 6 句柄无效. 7 存储控制块被损坏. 8 存储空间不足,无法处理此 ...
- vuex 基本用法、兄弟组件通信,参数传递
vuex主要是是做数据交互,父子组件传值可以很容易办到,但是兄弟组件间传值,需要先将值传给父组件,再传给子组件,异常麻烦. vuex大概思路:a=new Vue(),发射数据'msg':a.$emit ...
- Python的伪私有属性
什么是伪私有属性? 在Python中,没有类似 private 之类的关键字来声明私有方法或属性. Python中要声明私有属性,需要在属性前加上双下划线(但是结尾处不能有双下划线),如:self._ ...
- TP框架如何开启log日志
1. 日志的处理工作是由系统自动进行的,在开启日志记录的情况下,会记录下允许的日志级别的所有日志信息. 其中,为了性能考虑,SQL日志级别必须在调试模式开启下有效,否则就不会记录. 系统的日志记录由核 ...
- .net随笔--不好归类的
1..cs .Designer.cs .resx三种文件 cs是类文件,不介绍了.Designer.cs是visual studio对cs类文件的自动生成代码的一种补充,在编辑器里用视图的方式对win ...
- PE文件详解二
本文转自小甲鱼的PE文件相关教程,原文传送门 咱接着往下讲解IMAGE_OPTIONAL_HEADER32 结构定义即各个属性的作用! 接着我们来谈谈 IMAGE_OPTIONAL_HEADER 结构 ...