S3C6410移植u-boot-2010.3(5)Dnw for linux

发布者:rho27最新更新时间:2024-09-03 来源: cnblogs关键字:S3C6410  移植  u-boot  Dnw  for  linux 手机看文章 扫描二维码
随时随地手机看文章


  现在开始记录在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)

[] (unwind_backtrace+0x0/0xfc) from [] (dump_stack+0x18/0x1c)

[] (dump_stack+0x18/0x1c) from [] (panic+0x60/0x1ac)

[] (panic+0x60/0x1ac) from [] (mount_block_root+0x204/0x25c)

[] (mount_block_root+0x204/0x25c) from [] (mount_root+0x88/0xd0)

[] (mount_root+0x88/0xd0) from [] (prepare_namespace+0x10c/0x1a8)

[] (prepare_namespace+0x10c/0x1a8) from [] (kernel_init+0xf0/0x130)

[] (kernel_init+0xf0/0x130) from [] (kernel_thread_exit+0x0/0x8)


  这个问题比较好理解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的移植。


关键字:S3C6410  移植  u-boot  Dnw  for  linux 引用地址:S3C6410移植u-boot-2010.3(5)Dnw for linux

上一篇:S3C6410移植u-boot-2010.3(6)回顾总结
下一篇:S3C6410移植u-boot-2010.3(4)uboot的dnw功能添加

推荐阅读最新更新时间:2024-11-09 10:41

linux 简单的DMA例程
一个简单的使用DMA 例子 示例:下面是一个简单的使用DMA进行传输的驱动程序,它是一个假想的设备,只列出DMA相关的部分来说明驱动程序中如何使用DMA的。 函数dad_transfer是设置DMA对内存buffer的传输操作函数,它使用流式映射将buffer的虚拟地址转换到物理地址,设置好DMA控制器,然后开始传输数据。 int dad_transfer(struct dad_dev *dev, int write, void *buffer, size_t count) { dma_addr_t bus_addr; unsigned long flags; /* Map the buffer for DM
[单片机]
Linux移植之make uImage编译过程分析
编译出uboot可以运行的linux内核代码的命令是make uImage,下面详细介绍下生成linux-2.6.22.6/arch/arm/boot/uImage的过程: 1、vmlinux、Image、uImage、zImage的区别 2、vmlinux生成过程简介 3、uImage生成过程简介 1、vmlinux、Image、uImage、zImage的区别,在执行make uImage之后会在%生成如下几个文件Image、uImage、zImage。 vmlinux是可引导的、压缩的内核。“vm”代表“Virtual Memory”。Linux 支持虚拟内存,不像老的操作系统比如DOS有640KB内存的限制。Lin
[单片机]
<font color='red'>Linux</font><font color='red'>移植</font>之make uImage编译过程分析
OK6410A 开发板 (八) 66 linux-5.11 OK6410A linux 并发 竞态 与 同步
并发执行单元引起的错误 : 竞态案例 a 初始化 为 0 A 内核进程 对 变量 a 加1 B 内核进程 对 变量 a 加1 a 现在 为 2 下面的顺序不会有问题 A load 内存中的a 进 寄存器 A 寄存器 自加 1 A store 寄存器中的值 进 内存 B load 内存中的a 进 寄存器 B 寄存器 自加 1 B store 寄存器中的值 进 内存 此时a的值为2 下面的顺序会有问题 A load 内存中的a 进 寄存器1 A 寄存器1 自加 1 B load 内存中的a 进 寄存器2 B 寄存器2 自加 1 A store 寄存器1中的值 进 内存 B store
[单片机]
s3c6410的UART设备驱动(4)
上两篇说了在模块初始化是调用uart_register_driver和uart_add_port注册UART驱动并添加端口,在模块卸载时调用uart_unregister_driver和uart_remove_one_port以注销UART驱动并移除端口,主要讲述的是这些函数的具体代码,但没说这些函数在何处被调用,这一篇讲述这些函数的调用。 1、在Samsung.c (linux2.6.28driversserial)文件中,有如下代码: module_init(s3c24xx_serial_modinit); module_exit(s3c24xx_serial_modexit); 看到这两个,应该知道了此模块调用的
[单片机]
基于for循环的呼吸灯
1 #include stm32f10x.h 2 #include stm32f10x_gpio.h 3 //#include led.h 4 #include Breath_led.h 5 #define bbb 5000 6 7 /* 8 定义三个无符号变量: 9 i控制亮灭的时间 10 j控制亮灭的亮度变化 控制低电平的时间 11 K控制整个呼吸灯的时间 12 13 讲解:总的时间为5000us 14 bbb-j bbb(bbb-j) 15 1、高电平的时间5000us 低电平的时间为0 红灯最亮 16 3、高电平的时间4000us 低
[单片机]
TQ2440 学习笔记—— 28、移植U-BootU-Boot 的配置过程】
1、U-Boot 工程简介 U-Boot ,全称为Universal Boot loader, 即通用Bootloader。 它的名字有两重含义:可以引导多种操作系统:Linux、NetBSD、VxWorks0、QNX、RTEMS、ARTOS、Lynx等; 支持多种架构的CPU :PowerPC、MIPS、x86、ARM、NIOS、XScale等。 具有如下特性: 2、U-Boot 源码结构 在 U-Boot-1.1.6 的基础上分析和移植,从sourceforge 网站下载U-Boot-1.1.6.tar.bz2 后解压即可得全部源码。 U-Boot-1.1.6 根目录下共有26个子目录,可以分为4
[单片机]
TQ2440 学习笔记—— 28、<font color='red'>移植</font><font color='red'>U-Boot</font>【<font color='red'>U-Boot</font> 的配置过程】
Linux嵌入式 -- Bootloader , Uboo
1. Bootloader作用 PC机中的引导加载程序由BIOS(其本质是一段固件程序)和GRUB或LILO一起组成。BIOS在完成硬件检测和资源分配后,将硬盘中的引导程序读到系统内存中然后将控制权交给引导程序。引导程序的主要任务是将内核从硬盘上读到内存中,然后跳转到内核的入口点去运行,即启动操作系统。 简单地说,BootLoader就是在操作系统运行之前运行的一段小程序。通过这段小程序,可以初始化硬件设备,从而将系统的软硬件环境带到一个合适的状态,以便为最终调用操作系统做好准备。 系统加电或复位后,所有的CPU通常都从CPU制造商预先安排地址开始执行。比如,S3C2410在复位后从地址0x00000000起开始执行。而嵌入式
[单片机]
<font color='red'>Linux</font>嵌入式 -- Bootloader , Uboo
基于gnu-arm-linux的LPC2220的简单工程模板
1:源头 我们学习arm嵌入式开发,一般接触到的是ADS1.2、kei的工程模板,这些模板对初学者入门来说是一种福音,但是想深入了解一下芯片启动过程、 编译和链接、映像文件结构、如何初始化、移植标准库等这些内容的话,这些商业IDE就显得隐藏了很多细节,不利于进一步学习。基于上述缘由, 我写了一个基于gnu arm-linux开发环境的LPC2220的简单工程,此工程实现了芯片开机初始化、加载映像到运行映像的转换、ZI段的清零、堆栈 的设置、引导高层C语言函数、移植标准库、在高层实现了printf用于调试。 2:例程实现的功能 初始化LPC2220芯片: 1,实现LPC2220中断向量表。 2,设置ARM芯片各个模式运行时所
[单片机]
基于gnu-arm-<font color='red'>linux</font>的LPC2220的简单工程模板
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved