Linux下USB烧写uImage kernel

1.启动开发板,进入u-boot:(如果开发板中没有系统,可以通过用SD卡方式启动开发板进入)

U-Boot 2011.06 (Mar 19 2012 - 08:45:34) for MINI6410

CPU: [email protected]

Fclk = 667MHz, Hclk = 133MHz, Pclk = 66MHz (ASYNC Mode)

Board: MINI6410

DRAM: 256 MiB

NAND: 512 MiB

MMC: SAMSUNG SD/MMC: Host controler CH0

SD card is SD_VERSION_2

SD/MMC size : 3911680 block * 512B = 1910MB

Video: no Video params found, try bootargs~~ 640x480x24 31kHz 59Hz

[petworm] video_hw_init: <640, 480, 640, 480>

Error: Bad gzipped data

Error: no valid bmp or bmp.gz image at 57500000

In: serial

Out: serial

Err: serial

Net: dm9000

Hit any key to stop autoboot: 3

2.按任意键进入命令行状态后,运行dnw命令,文件存放地址作为参数传入(十六进制):

MINI6410 # dnw 50008000

Insert a OTG cable into the connector!

3.插入USB电缆,连接主机和开发板,minicom会出现如下提示:

USB Cable is Connected

Now, Waiting for DNW to transmit data

4.另开一个终端,加载secbulk驱动:

sudo insmod secbulk

5.建立secbulk驱动设备节点(通过试验,可跳过此步):

sudo mknod /dev/secbulk0 c 102 0

6.运行dnw程序,将欲传送的uImage的带路径的文件名作为参数传入:

sudo ./dnw uImage_a70 #(我们选择当前目录下的uImage_a70文件)

回车后传输开始,直至传送完毕。Minicom端提示如下:

Now, Waiting for DNW to transmit data

Download Done!! Download Address: 0x50008000, Download Filesize:0x40de8

Checksum is being calculated.

Checksum O.K.

主机端提示如下:

[email protected]:~/Desktop/dnw_linux/dnw$ sudo ./dnw uImage_a70

file name : uImage_a70

file size : 3763296 bytes

Writing data...

100% 3763306 bytes OK

此时,文件传送完毕,且校验正确。这时我们就可以用u-boot命令来将文件写入相应

的nandflash地址中:

MINI6410 # nand erase 80000 400000

NAND erase: device 0 offset 0x80000, size 0x400000

Erasing at 0x460000 -- 100% complete.

OK

MINI6410 # nand write 50008000 80000 400000

NAND write: device 0 offset 0x80000, size 0x400000

4194304 bytes written: OK

7.将S2调整到NAND启动位置,重启开发板后从NandFlash读取内核到内存,运行结

果如下:

U-Boot 2011.06 (Mar 16 2012 - 13:58:27) for MINI6410

CPU: [email protected]

Fclk = 667MHz, Hclk = 133MHz, Pclk = 66MHz (ASYNC Mode)

Board: MINI6410

DRAM: 256 MiB

NAND: 512 MiB

MMC: SAMSUNG SD/MMC: Host controler CH0

No SD/MMC card detected!

No MMC card for env!

Using default environment

Video: no Video params found, try bootargs~~ 640x480x24 31kHz 59Hz

[petworm] video_hw_init: <640, 480, 640, 480>

No SD/MMC card detected!

Video: No MMC card for background image!

In: serial

Out: serial

Err: serial

Net: dm9000

Hit any key to stop autoboot: 0

MINI6410 # nand read 50008000 80000 400000

NAND read: device 0 offset 0x80000, size 0x400000

4194304 bytes read: OK

8.从内存中启动内核:

MINI6410 # bootm 50008000

## Booting kernel from Legacy Image at 50008000 ...

Image Name: petworm

Image Type: ARM Linux Kernel Image (uncompressed)

Data Size: 3763232 Bytes = 3.6 MiB

Load Address: 50008000

Entry Point: 50008040

Verifying Checksum ... OK

XIP Kernel Image ... OK

OK

Starting kernel ...

Uncompressing Linux... done, booting the kernel.

Initializing cgroup subsys cpu

Linux version 2.6.38-FriendlyARM ([email protected]) (gcc version 4.5.1 (ctng-1.8.1-F1

CPU: ARMv6-compatible processor [410fb766] revision 6 (ARMv7), cr=00c5387f

CPU: VIPT nonaliasing data cache, VIPT nonaliasing instruction cache

Machine: MINI6410

。。。 。。。

至此,Linux下用USB电缆烧写uImage成功完成!

附:

我们可以通过使用u-boot自带的mkimage命令来将zImage转换为uImage文件,命令如下:

mkimage -A arm -O linux -T kernel -C none -a 0x50008000 -e

0x50008040 -n "image-name" -d zImage_a70 uImage_a70

此命令将zImage_a70文件转换为uImage_a70文件,镜像的名称为image-name。

时间: 2024-10-24 11:52:02

Linux下USB烧写uImage kernel的相关文章

一键烧写Linux,USB烧写Linux,裸机调试准备

一键烧写linux步骤 A:格式化SD卡,格式为FAT32(尽量用SD卡,其他需要转接板的卡可能会有问题) B:利用PC烧写工具SD_Writer.exe将SD卡启动文件mmc.bin烧写进SD卡中 a:启动SD_Writer.exe(win7需要以管理员身份运行) b:board model 选择6410 c:sd volume(SD盘符),首先点击scan自动搜寻,错误的话手动调整 d:sd type类型为auto(win7还需要点击format格式化SD卡) e:os type选择linu

mini2440 uboot烧写uImage

mini2440下烧写u-boot后,就可以用u-boot烧写linux内核了. 安装mkimage工具: apt-get install u-boot-tools 解压缩官方mini2440 linux包: tar xf linux-2.6.32.2-mini2440-20130614.tar.gz 然后进入文件夹,并进行编译(配置文件应该选择和自己的lcd对应的配置来进行拷贝,因为我的开发板没有屏幕,所以就随便选取了一个配置): cd linux-2.6.32.2cp config_mini

嵌入式 hi3518c裸板uboot烧写、kernel烧写、fs烧写小结

1.在uboot中我可以添加自己的命令,添加的方法是找到一个uboot的命令,然后模仿着去增加属于自己的命令代码以及实现函数就可以 2.记住在使用printf进行调试的时候,在遇到指针或者字符串的时候最好使用“%x”,以为我不知道指针或者字符串中是否包含不可见字符,如果有不可见字符会导致错误,而且错误不好查找 3.对于uboot中的环境变量,其实是放在uboot里面的,也就是环境变量占用的是uboot的空间,如果不需要去实时修改环境变量的值那么就可以不用env这个分区:但是如果需要修改环境变量,

Linux下 USB设备驱动分析(原创)

之前做过STM32的usb HID复合设备,闲来看看linux下USB设备驱动是怎么一回事, 参考资料基于韦东山JZ2440开发板,以下,有错误欢迎指出. 1.准备知识 1.1USB相关概念: USB枚举过程:https://blog.csdn.net/go_str/article/details/80802452 USB其它概念: (1)usb是主从结构,usb的传输都是主机发起: (2)usb右四种传输类型:控制.批量.中断.实时传输. (3)usb数据是通过端点进行通讯的,0端点既能输入也

linux下USB设备驱动

本文以USB鼠标讲解USB设备驱动. 驱动程序中调用usb_register(struct usb_driver *)函数时,先判断USB总线驱动程序是否支持usb_driver里定义的id_table,若支持,调用usb_driver的probe函数. 所以首先要定义并初始化usb_driver结构体: static struct usb_driver usbmouse_as_key_driver = { .name = "usbmouse_as_key", .probe = usb

详解linux平台芯片烧写流程

详解将持续更新! 连接好开发板,重新启动,进入u-boot交互界面,执行如下操作: 一.配置网络 # pri # setenv ipaddr 192.168.64.11   (注:ipaddr 为开发板IP) # setenv serverip 192.168.64.12        (注:serverip 为Windows主机IP) # setenv gatewayip 192.168.64.1 (注:gatewayip 为网关) # saveenv # ping 192.168.64.12

tiny4412学习(一)之从零搭建linux系统(烧写uboot、内核进emmc+uboot启动内核)【转】

本文转载自:http://blog.csdn.net/fengyuwuzu0519/article/details/74080109 版权声明:本文为博主原创文章,转载请注明http://blog.csdn.net/fengyuwuzu0519. 目录(?)[+] 硬件平台:tiny4412 系统:linux-3.5-20151029 文件系统:busybox-1.22.1.tar.bz2 编译器: arm-linux-gcc-4.5.1 目的: 使用uboot引导Linux系统,并挂接根文件系

arm下如何烧写指定分区大小的内核和文件系统

最近在海思3518e平台下烧写内核和文件系统,由于项目需要,需要运行海思SDK中的测试软件HiIspTool,不能使用精简后的文件系统,需要刷一个比较大的文件系统,但在此过程中由于各种原因,弄坏了一个板子,烧坏了一个uboot,由于要卸下SPI NOR FLASH,重新烧写实在太过麻烦,放弃了该板子.在此过程中走了些弯路,在此记录下主要过程和注意事项,希望能够提醒自己和刚如何这方面的新手,共勉! 1.板子上电时按住ctrl+c进入uboot模式 2.设置UBOOT模式的板子的IP和PC服务端的I

转: 嵌入式linux下usb驱动开发方法--看完少走弯路【转】

转自:http://blog.csdn.net/jimmy_1986/article/details/5838297 嵌入式linux下的usb属于所有驱动中相当复杂的一个子系统,要想将她彻底征服,至少需要个把月的时间,不信?那是你没做过. 本人做过2年的嵌入式驱动开发,usb占了一大半的时间.期间走了不少弯路,下面将我的血的经验教训总结下,为要从事和正在从事的战友们做一点点贡献吧:) 首先,扫盲: 要做的是阅读usb Spec(英文的哦,其实很多文章.书籍和资料真有水平的还是原创的好,就像食品