现在开始记录在linux上安装dnw功能
想要源代码,可以到这里fork
https://github.com/Qunero/dnw4linux
详细的使用,README里面讲得很清楚了,不加赘述了。
这里只讲一下怎么使用。
1、加载模块.ko文件
$ cd secbulk_driver/
$ insmod secbulk.ko
然后确认一下已经加载
$ lsmod | grep secbulk
//若正确加载了,应该有回显
secbulk 12728 0
2、插入USB to miniUSB线
然后查看一下系统信息
$ dmesg
//正常情况下应该有如下信息在最末端
[15424.424366] usb 1-3: new full-speed USB device number 9 using ohci_hcd
[15424.657680] secbulk:secbulk probing...
[15424.657684] secbulk:bulk out endpoint found!
3、下载uImage镜像
首先是目标板端
# dnw 50008000
然后是PC端
$ dnw arch/arm/boot/uImage
目标板显示如下内容时则完成传输
Download Done!! Download Address: 0x50008000, Download Filesize:0x378414
Checksum is being calculated....
Checksum O.K.
接着进行如下操作
# nand erase 10000 50000
//将1M - 5M的空间清除,即为Image的存放地址
# nand write 50008000 10000 50000
//将50008000除下载的uImage写入刚才清除的空间
# reset
//重启
//然后会发现卡在starting kernel的地方进入不了系统
此时出现的问题有两种可能:
1)BOOTCOMMAND设置不对,回头检查一下自己的/include/configs/smdk6410.h
2)make uImage的时候未设定参数
具体原因可以参详
http://www.cnblogs.com/sywtt/archive/2012/01/25/2329284.html
这里我的具体方案是
$ mkimage -n 'linux-3.0.1' -A arm -O linux -T kernel -C none -a 0x50008000 -e 0x50008040 -d zImage uImage
//zImage得在当前目录下
//创建的uImage权限未0664, 改为0775
此时能启动开发板了,但是在启动过程中卡在下面的错误
s3c-rtc s3c64xx-rtc: setting system clock to 2021-04-14 21:21:47 UTC (1618435307)
Root-NFS: no NFS server address
VFS: Unable to mount root fs via NFS, trying floppy.
Kernel panic - not syncing: VFS: Unable to mount root fs on unknown-block(2,0)
[
[
[
[
[
[
[
这个问题比较好理解VFS挂载的问题
我的做法是diff一下uboot1.1.6与uboot2010的include/configs/smdk6410.h
找到BOOTARGS,在uboot1.1.6中
#define CONFIG_BOOTARGS 'root=/dev/mtdblock2 rootfstype=yaffs2 console=ttySAC0,115200'
我将uboot2010中的同样参数替换成这个,然后重新编译一次uboot
重新执行一次dnw, 终于成功运行了!
下周继续进行kernel的移植。