2.2.2 编译安装和使用
直接查看该软件包的README,按步执行即可:
1、源码说明:
本源代码收集自网络,经过整理和加入宏定义,使其适用于OK6410开发板;对
源码进行了适当的注释和错误纠正;同样以GPL协议发布; 2、使用说明: 2.1 编译
直接在解压后的目录中make即可;然后在对应的子目录中可以找到编译好的文件;
更方便的做法:make install 会直接将相关文件编译好,然后放到当前目录下,
编译好的文件为:
dnw --- 用于传输数据的软件,用法: dnw filename
secbulk.ko --- 识别下载用USB的驱动; 用法: sudo insmod secbulk.ko 2.2 自动化
在编译成功后,完成下列步骤方面以后使用: 2.2.1 将dnw放到系统路径: sudo cp dnw /usr/sbin/ 2.2.2 将secbulk.ko驱动设为自动加载:
先在住目录建立mydriver目录:mkdir ~/mydriver
将驱动放入自定义mydriver中:cp secbulk.ko ~/mydriver/ 修改/etc/rc.d/rc.local文件,末尾加入: sudo insmod $HOME/secbulk.ko
注意: 将上面的$HOME替换成实际的绝对路径,比如: /home/qulory 2.3 清理
直接执行make clean, 让你的源码目录干干净净; 2.4 使用
注意,当前编译好的dnw在32位linux可用,但是secbulk.ko驱动文件需要自己编译
必须同当前使用的内核的版本一致,内核版本升级后也需要重新编译; 3、移植帮助:
要成功移植到类似的开发板,需要以下2步: 3.1 驱动处理:
进入secbulk_driver子目录,修改文件secbulk.c中的关于DOWNLOAD_USB_ID_MAJOR
和DOWNLOAD_USB_ID_MINOR的宏定义,让其与你的usb对应,可以通过lsusb命令查看
获得该id的信息; 3.2 dnw下载地址的处理:
进入dnw_src目录,修改dnw.c文件中DOWNLOAD_ADDR的定义,将其设为你的开发板
的下载地址; 3.3 有疑问可以联系 Qulory<Quner612@qq.com>;
驱动安装好后,在用kermit连接好开发板,然后重启开发板,让其停留在u-boot阶段;然后在kermit中输入dnw 50008000,
这个地址要和dnw软件编译时指定的下载地址一致,然后功过lsusb命令可以检查到该usb线,如3.2 中所示;并且在正常执行了 : sudo
insmod secbulk.ko 后,可以检查到如下信息:
less /var/log/kern.log
Nov 16 13:21:21 qunengrong-Studio-1450 kernel: [139476.958530] secbulk:secbulk probing...
Nov 16 13:21:21 qunengrong-Studio-1450 kernel: [139476.958534] secbulk:bulk out endpoint found!
至此驱动安装和dnw软件准备就绪;
2.2.3 关于dnw2
dnw2使用libusb来实现对该USB的操控,但是不如dnw来的直接:/dev/secbulk0 ,前者更加系统但是使用传输数据的时候经常出现如下错误:
Target usb device found! Cannot claim interface: Device or resource busy
后续有时间详细分析以下在处理;
2.3 minicom终端的使用
minicom是基于字符菜单的,不太好用,而且经常快捷键不响应和出现乱码;不过附加使用方法如下:
2.3.1 使用minicom -s 启动并配置
使用sudo启动:
主要设置好串口,如下蓝色部分:
+-----[configuration]------+
| Filenames and paths |
| File transfer protocols |
| Serial port setup |
| Modem and dialing |
| Screen and keyboard |
| Save setup as dfl |
| Save setup as.. |
| Exit |
| Exit from Minicom |
+--------------------------+
在该菜单中输入A,修改串口设备为 /dev/ttyUSB0,如下:
+-----------------------------------------------------------------------+
| A - Serial Device : /dev/ttyUSB0 |
| B - Lockfile Location : /var/lock |
| C - Callin Program : |
| D - Callout Program : |
| E - Bps/Par/Bits : 115200 8N1 |
| F - Hardware Flow Control : Yes |
| G - Software Flow Control : No |
| |
| Change which setting? |
+-----------------------------------------------------------------------+
退出并保存,然后可以开始使用了:
Welcome to minicom 2.6.1 OPTIONS: I18n
Compiled on May 1 2012, 10:55:27.
Port /dev/ttyUSB0
Press CTRL-A Z for help on special keys
exit not allowed from main input shell.
SMDK6410 #
Part3烧写测试
3.1 连接好USB串口并打开kermit终端
参考2.1.3 中的说明,连接好开发板, 启动kermit后,输入connect命令, 开始在kermit中控制开发板; 让其停留在u-boot的命令行,选择2 进行从USB烧写系统的菜单,然后选择1烧写u-boot;
U-Boot 1.1.6 (Nov 16 2012 - 12:23:47) for SMDK6410 ****************************************
** u-boot 1.1.6 **
** Updated for OK6410 TE6410 Board **
** Version (2012-09-23) **
** OEM: Forlinx Embedded **
** Web: http:// ** **************************************** CPU: S3C6410 @532MHz
Fclk = 532MHz, Hclk = 133MHz, Pclk = 66MHz, Serial = CLKUART (SYNC Mode)
Board: SMDK6410
DRAM: 256 MB
Flash: 0 kB
NAND: 2048 MB
In: serial
Out: serial
Err: serial
Hit any key to stop autoboot: 0 ###################### User Menu for OK6410#####################
[1] Format the nand flash
[2] Burn image from USB
[3] configure the lcd size
[4] Boot the system
[5] Reboot the u-boot
[6] Exit to command line -----------------------------Select--------------------------------- Enter your Selection:2
##### Select the fuction #####
[1] Flash u-boot
[2] Flash kernel
[3] Flash system
[4] Exit
Enter your Selection:1 NAND erase: device 0 offset 0x0, size 0x200000 Erasing at 0x180000 -- 100% complete.
OK
Insert a OTG cable into the connector! OTG cable Connected! Now, Waiting for DNW to transmit data
3.2 连接好USB数据线并使用DWN传数据
在开发板处于接收数据的状态下,在该USB插到linux系统上就能够识别出该USB的信息,也只有这个时候才能识别到,如下,注意蓝色部分(该USB的设备ID,关系到第二部分的驱动程序的对应内容):
$lsusb
Bus 001 Device 003: ID 0c45:6407 Microdia
Bus 002 Device 041: ID 04e8:1234 Samsung Electronics Co., Ltd Bus 004 Device 002: ID 0a5c:4500 Broadcom Corp. BCM2046B1 USB 2.0 Hub (part of BCM2046 Bluetooth)
Bus 008 Device 023: ID 067b:2303 Prolific Technology, Inc. PL2303 Serial Port
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 003 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 004 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 005 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 006 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 007 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 008 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 004 Device 003: ID 413c:8161 Dell Computer Corp. Integrated Keyboard
Bus 004 Device 004: ID 413c:8162 Dell Computer Corp. Integrated Touchpad [Synaptics]
在另一个终端中用dnw写数据,最后状态提示传输成功:
$sudo dnw u-boot.bin file name : u-boot.bin file size : 212992 bytes
Writing data... 100 213002 bytes !OK
在kermit中观察状态,成功写入数据:
##### Select the fuction #####
[1] Flash u-boot
[2] Flash kernel
[3] Flash system
[4] Exit
Enter your Selection:1 NAND erase: device 0 offset 0x0, size 0x200000 Erasing at 0x180000 -- 100% complete.
OK
Insert a OTG cable into the connector! OTG cable Connected! Now, Waiting for DNW to transmit data
Download Done!! Download Address: 0x50008000, Download Filesize:0x34000 Checksum is being calculated.
Checksum O.K.
NAND write: device 0 offset 0x0, size 0x200000 1032192 bytes written: OK
##### Select the fuction #####
[1] Flash u-boot
[2] Flash kernel
[3] Flash system
[4] Exit
Enter your Selection:
然后选择4退出烧写,然后重启u-boot看是否可用:
##### Select the fuction #####
[1] Flash u-boot
[2] Flash kernel
[3] Flash system
[4] Exit Enter your Selection:4 ###################### User Menu for OK6410#####################
[1] Format the nand flash
[2] Burn image from USB
[3] configure the lcd size
[4] Boot the system
[5] Reboot the u-boot
[6] Exit to command line -----------------------------Select--------------------------------- Enter your Selection:5 reset...
KK
U-Boot 1.1.6 (Nov 16 2012 - 12:23:47) for SMDK6410 ****************************************
** u-boot 1.1.6 **
** Updated for OK6410 TE6410 Board **
** Version (2012-09-23) **
** OEM: Forlinx Embedded **
** Web: http:// ** **************************************** CPU: S3C6410 @532MHz
Fclk = 532MHz, Hclk = 133MHz, Pclk = 66MHz, Serial = CLKUART (SYNC Mode)
Board: SMDK6410
DRAM: 256 MB
Flash: 0 kB
NAND: 2048 MB
In: serial
Out: serial
Err: serial Hit any key to stop autoboot: 0 NAND read: device 0 offset 0x200000, size 0x500000 s3c-nand: 1 bit(s) error detected, corrected successfully 5242880 bytes read: OK
Boot with zImage
Starting kernel ...
至此,说明重启进入u-boot已经成功,也就是刚刚我们的ubuntu下dnw传输数据和烧写u-boot都已成功完成;