搜索

[MCU] 嵌入式Linux开发板裸机调试几种方法

[复制链接]
211|17
 楼主 | 2020-9-6 17:38 | 显示全部楼层 |阅读模式
本帖最后由 一路向北lm 于 2020-9-8 10:38 编辑


@21小跑堂   @21小跑堂    @21小跑堂
1.使用imxdownload烧写6ULL
imxdownload 拷贝到工程根目录下,我们要将 imxdownload 拷贝到工程根目录下,以led工程为例,也就是和 led.bin 处于同一个文件夹下,要不然烧写会失败的,拷贝完成以后如图
394085f54adfaa8247.png


使用特权

评论回复
 楼主 | 2020-9-6 17:38 | 显示全部楼层
给予 imxdownload 可执行权限 ,直接将软件 imxdownload 从 Windows 下复制到 Ubuntu 中以后, imxdownload 默认是没有可执行权限的。我们需要给予 imxdownload 可执行权限,使用命令“chmod”,命令如下 :
994585f54ae0a086ac.png

使用特权

评论回复
 楼主 | 2020-9-6 17:38 | 显示全部楼层
当给予 imxdownload 可执行权限以后其名字变成了绿色的,如果没有可执行权限的话其名字颜色是白色的。
向 SD 卡烧写 bin 文件 ,使用 imxdownload 向 SD 卡烧写 led.bin 文件,命令格式如下:/imxdownload <.bin file> <SD Card> 其中.bin 就是要烧写的.bin 文件, SD Card 就是你要烧写的 SD 卡,比如我的电脑使用如下命令烧写 led.bin 到/dev/sd中: ./imxdownload led.bin /dev/sdb烧写的过程中可能会让你输入密码,输入你的Ubuntu 密码即可完成烧写,烧写过程如图 :
165885f54ae22e5d99.png

使用特权

评论回复
 楼主 | 2020-9-6 17:39 | 显示全部楼层
2.使用uboot +usb +dnw烧写裸机(三星6410)
通过SD_Writer.exe将mmc.bin烧写到SD 卡中 ,将开发板设置到SD卡启动。(具体方法参见飞凌开发板linux3.0.1用户手册.pdf)
390695f54ae3ace20a.png

使用特权

评论回复
 楼主 | 2020-9-6 17:39 | 显示全部楼层
将SD卡安装到开发板中并启动,快速敲空格键让开发板停留在uboot的启动画面,如下图所示,出现菜单框,选择5,即可输入命令。
437575f54ae4a59378.png

使用特权

评论回复
 楼主 | 2020-9-6 17:40 | 显示全部楼层
安装、dnw 以及USB驱动(xp环境)
执行以下命令可以烧写,烧写原理是用Linux的uboot命令 nand烧写程序到开发板。
01.        输入:dnw  50008000 下载你要烧写的程序。
02.        然后从dnw的usbport->Transmit->Transmit发送你要下载的.bin文件。
03.        输入:nand  erase  0  100000 擦除nandflash前1M的空间。
04.        输入:nand  write.uboot  50008000  0  1000000  将内存地址50008000中的1M数据写到nandflash的0 ~ 100000空间中(即前1M字节)。
05.        将开发板设置为nand启动,并重新启动开发板。

使用特权

评论回复
 楼主 | 2020-9-6 17:40 | 显示全部楼层
3.使用uboot中网络验证裸机程序(通用)
在学习嵌入式Linux之前,还是有必要了解一下嵌入式处理器的裸机程序。但一些教程中提供的裸机程序烧写方法都相对比较复杂,有些需要使用sd卡烧写,烧写前还要格式化SD卡,然后再给裸机程序加入头部信息(6ull,6410/2440不需要),用专用的下载上位机烧写。其实裸机程序在我们学习嵌入式的过程中只是一个引导作用,用来了解这些处理器是如何工作的,因此编写好裸机程序后其实没必要真正地烧写到系统里面,只需要等让它运行,观察实验现象即可。uboot中一般都会提供多种文件传输的方法,如tftp,nfs,xmodem,ymodem等方法,选择一种板子上uboot支持的方式,如不清楚,可以使用pri命令查看,并选择对应的命令查看帮助信息,如tftp help等(不同的uboot命令会有所不同)。把编译好的裸机bin文件下载到对应的地址上,注意这个地址需要和裸机程序在链接时指定的地址一样(在.lds文件中描述,或者在执行链接的时候指定),如指定到0x87800000。那么就下载到0x87800000这个地址,完成后让uboot直接跳转到这个地址即可运行裸机程序:go 0x87800000.需要注意,在板子复位或者重上电等情况,会运行默认的程序,而不是裸机程序,所以说这种方式并不是烧写,只是拷贝到内存中执行,当中省略了很多烧写裸机必要的步骤。

使用特权

评论回复
 楼主 | 2020-9-6 17:40 | 显示全部楼层
nfs服务模式:
使用nfs在6ull上验证裸机、uboot、kernel,虚拟机需要安装nfs服务,并开启nfs服务,具体操作参考开发环境搭建第二小节。开发板运行在uboot界面,将其ip、服务ip、网关等进行修改,保证可以与服务器(虚拟机)ip正常ping通即可。
131845f54ae98df43a.png

使用特权

评论回复
 楼主 | 2020-9-6 17:41 | 显示全部楼层
准备好以后就可以使用 nfs 命令来将 裸机下载到开发板 DDR 的0X87800000 链接地址处,命令如下: nfs 87800000 192.168.0.104:/home/lumeng/linux/nfs/uart.bin
501185f54aeaba42b7.png

使用特权

评论回复
 楼主 | 2020-9-6 17:41 | 显示全部楼层
go命令执行跳转 到 0x87800000 执行串口打印结果:
233085f54aeb98c7d1.png

使用特权

评论回复
 楼主 | 2020-9-6 17:41 | 显示全部楼层
不仅可以测试裸机程序,也可以加载uboot和内核,来测试uboot和内核哦!使用nfs传输uboot和执行如下:
969055f54aec7b40e9.png

使用特权

评论回复
 楼主 | 2020-9-6 17:41 | 显示全部楼层
使用nfs传输内核+设备树和启动内核如下,使用nfs 命令从服务器下载kernel和设备树到DDR。
nfs 80800000 192.168.0.104:/home/lumeng/linux/nfs/zImage
nfs 83000000 192.168.0.104:/home/lumeng/linux/nfs/6ull.dtb
729905f54aedc60134.png

使用特权

评论回复
 楼主 | 2020-9-6 17:42 | 显示全部楼层
使用bootz命令启启动内核 bootz 80800000  -  83000000
209115f54aeed15350.png

使用特权

评论回复
 楼主 | 2020-9-6 17:42 | 显示全部楼层
3.2 tftp服务模式:
使用tftp在6ull上验证裸机、uboot、kernel,虚拟机需要安装tftp服务,并开启tftp服务,具体操作参考开发环境搭建第二小节。开发板运行在uboot界面,将其ip、服务ip、网关等进行修改,保证可以与服务器(虚拟机)ip正常ping通即可。
481685f54aeff15663.png

使用特权

评论回复
 楼主 | 2020-9-6 17:42 | 显示全部楼层
准备好以后就可以使用 tftp 命令来将 裸机程序uart.bin下载到开发板 DDR 的0X87800000 链接地址处,命令如下: tftp 87800000 uart.bin ,并使用go 87800000执行裸机。
192285f54af0c0d78a.png

使用特权

评论回复
 楼主 | 2020-9-6 17:42 | 显示全部楼层
使用tftp测试uboot和内核如下,具体和nfs类似,不再赘述。

使用特权

评论回复
| 2020-9-7 16:04 | 显示全部楼层
用哪家的开发板

使用特权

评论回复
 楼主 | 2020-9-7 19:43 | 显示全部楼层

都可以吧 我用的原子的 6ull

使用特权

评论回复
扫描二维码,随时随地手机跟帖
您需要登录后才可以回帖 登录 | 注册

本版积分规则

我要发帖 我要提问 投诉建议 申请版主

快速回复

您需要登录后才可以回帖
登录 | 注册
高级模式

论坛热帖

关闭

热门推荐上一条 /5 下一条

在线客服 快速回复 返回顶部 返回列表