【任务1】启动过程-Boot from USB
本文是原「蜗窝讨论区」的历史存档(2016-05-05),来自版块「X Project」,共 29 帖。讨论区已停止服务,此处仅供查阅。
- 任务说明
该任务是“X Project”第一个任务,也是所有嵌入式开发启动时遇到的第一个任务。
在ARM等嵌入式平台中,CPU上电后,会从固定地址运行Rom code(或者其它类型的介质,我们不再特意区分)。如果没有有效的启动介质,或者使用特殊手段,ROM code会执行一个称作DFU(Device Firmware Upgrade)的程序,该程序可以通过USB/UART等协议,和PC沟通,将PC上指定的Bin文件加载到RAM(通常为SRAM)中执行。
该任务将会以USB协议为例,结合U-Boot,实现这一过程,最终通过在Bin文件中点亮一盏LED灯,指示任务的完成。
- 涉及的知识点
看似简单的一个任务,其实牵涉很多知识点,总结如下:
CPU Boot过程[/*]
Boot ROM的执行逻辑[/*]
Boot ROM中USB download protocol[/*]
简单的USB原理[/*]
Linux平台下借助libusb编写简单的DFU工具[/*]
U-boot的基本框架(arch-->cpu-->machine-->board)[/*]
U-boot的启动流程,包括SPL等概念[/*]
U-boot的配置和移植[/*]
GPIO的控制(呵呵,小菜一碟)[/*]
简单的编译原理,链接脚本、运行时地址等[/*]
交叉编译环境的配置[/*]
U-Boot的编译[/*]
完成任务的思路
看到上面列举的知识点,相信大家会吓一跳,不过大可放心,按部就班的做就可以了。
首先,我们把任务拆分为如下几个相对独立的部分:
将所使用的硬件平台“Boot from USB”有关的硬件信息、以固定的格式罗列出来 移植U-Boot的时候,可以直接将这些信息对应到代码中的指定宏定义、变量等元素上,这样可以降低大家移植到新平台上的困难。 我和Linuxer会以特定的平台为例,写出一份或者两份硬件信息的范本,大家follow即可(就像做填空题,目的也是降低移植的困难)。[/*]
以博文的形式,将U-Boot的启动过程总结出来,供大家参考 主要目的是厘清代码中和启动过程有关的配置、宏定义等,这些信息会和上面的硬件信息一一对应,移植U-Boot的时候只需要填入即可。[/*]
结合特定的开发板,以项目文档的形式,将U-Boot的配置、编译等移植过程,总结出来 主要目的是为其它平台的移植提供参考。[/*]
以博文的形式,介绍linux平台下libusb的功能和使用方法 为后续DFU程序的编写做准备。[/*]
结合CPU ROM code中的USB协议,编写DFU程序 编写完成后,使用DFU将U-Boot的bin文件下载到板子指定的RAM地址执行。[/*]
其次,就是分猪肉了( )。大家根据自身情况,可以考虑选择任务2~任务5中的任意一个,多个人可以选择同一个任务,一个人也可以选择多个( ,我们可能优先为积极参与任务的同学送开发板哦!)。任务进行的过程中,大家可以随时在讨论区交流、讨论。
最后,提醒一下,大家完成任务的过程中,要不惜一切代价地借用已有的资源,只要思路对,哪怕代码是从别处抄过来的(自己一定要整理一遍),也可以达到目的。
暂时就这么多了,大家有其它想法的话,请踊跃讨论。
任务总结 到目前为止(2016/06/01),该任务在bubblegum 96boards上基本完成,共有如下的文档和代码产出:
(/u-boot/boot_flow_1.html)[/*]
u-boot代码,(https://github.com/wowotechX/u-boot)[/*]
交叉编译工具、Firmware下载工具等,(https://github.com/wowotechX/tools)[/*]
编译脚本,(https://github.com/wowotechX/tools)[/*]
由于Firmware下载工具(DFU)牵涉到USB,因此暂时没有产出文档(正在考虑分析一下USB子系统)。
可以通过如下步骤在板子上验证: 1)代码下载(具体可参考“X-003-UBOOT-基于Bubblegum-96平台的u-boot移植说明”)
[== Undefined ==]
mkidr -p ~/work/xprj
cd ~/work/xprj
git clone https://github.com/wowotechX/build
git clone https://github.com/wowotechX/u-boot
git clone https://github.com/wowotechX/tools
2)代码编译
[== Undefined ==]
cd build
make env_prepare #下载交叉编译工具,只需要执行一次即可
make libusb #只需要执行一次
make dfu #只需要执行一次
make uboot
3)开机是按住ADFU按键,将bubblegum 96board进入DFU模式,并使用USB和PC连接(当前支持linux,dfu工具也可以支持windows,我没有测试),下载u-boot并执行
[== Undefined ==]
sudo ../tools/dfu/dfu bubblegum 0xe406b200 out/u-boot/spl/u-boot-spl.bin 1
dfu命令的具体解释,可直接执行dfu命令查看。
最后,希望感兴趣的同学,可以帮忙检查文档、代码,并在空闲时间,在自己的开发板上将该任务完成。 多谢~~
需不需要指定一下uboot的版本?
kadajur 写道: 需不需要指定一下uboot的版本?
我们的代码仓库:https://github.com/wowotechX 我是直接从当前的u-boot开发分支拉过来的
有点没懂,既然是Rom Code 从USB下载Bin文件,为什么还需要Uboot?
bruno 写道: 有点没懂,既然是Rom Code 从USB下载Bin文件,为什么还需要Uboot?
如果只是简单的写一行汇编,点亮一个灯,那就太没有意思了。 我们要把U-boot的跑起来,顺便为后面的任务铺路,例如:boot kernel;利用U-Boot中的fastboot,下载并烧录image;等等。
现在cpu都支持从usb启动了?
scnutiger 写道: 现在cpu都支持从usb启动了?
抱歉,是我起名字起的不好,我想表达的是通过USB下载bin文件到板子的ram中执行。 大家可以帮忙再想想什么样子的标题好一些
这个任务怎么没有进度相关的计划。是不是说你们会先在S900上先行一步然后其他平台follow就可以?
zyro 写道: 这个任务怎么没有进度相关的计划。是不是说你们会先在S900上先行一步然后其他平台follow就可以?
由于都是用业余时间做的,进展不是很快,因此就没有做计划。 我们会在S900上做,大家可以follow S900的,也可以自己先做,做的过程中一起交流讨论即可。
我貌似错过了两个任务了 我还能跟上吗? 呜呜....
jansion 写道: 我貌似错过了两个任务了 我还能跟上吗? 呜呜....
没关系的,你可以在任何感兴趣的时候,参考完成任务的步骤,以及发布在博客上的文章,自己再来一遍。 如果使用不同的板子,可以把代码也commit到我们的代码仓库。 如果是相同的板子,也可以完善、改进一下当前的实现,然后偶上传代码。
PS:现在进展是相当缓慢的,因为基本上都是我一个人在做,还是希望大家能参与进来,热闹热闹~~
楼主,板子是自己购置吗?上哪购置呢?大淘宝吗?
ooonebook 写道: 楼主,板子是自己购置吗?上哪购置呢?大淘宝吗?
板子厂商送了一些,不过都送出去了
你可以参考这里的购买链接:http://linaro.co/bubblegum96-buy
我建议大家感兴趣的话,可以用其他板子(这样更有意义),开发过程中,我们会给出指导、建议。
wowo 写道:
ooonebook 写道: 楼主,板子是自己购置吗?上哪购置呢?大淘宝吗?
板子厂商送了一些,不过都送出去了
你可以参考这里的购买链接:http://linaro.co/bubblegum96-buy
我建议大家感兴趣的话,可以用其他板子(这样更有意义),开发过程中,我们会给出指导、建议。
谢谢wowo,手上有一块tiny210的板子,之前纯粹就是做二次开发和学习使用的。 也可以用这块板子搞搞吗?一个人弄的话感觉搞不定的,毕竟还不是你这样的大牛~ 看git_hub里面的代码更新好像也就S900在做。还有其他人在做其他板子吗?
ooonebook 写道:
wowo 写道:
ooonebook 写道: 楼主,板子是自己购置吗?上哪购置呢?大淘宝吗?
板子厂商送了一些,不过都送出去了
你可以参考这里的购买链接:http://linaro.co/bubblegum96-buy
我建议大家感兴趣的话,可以用其他板子(这样更有意义),开发过程中,我们会给出指导、建议。
谢谢wowo,手上有一块tiny210的板子,之前纯粹就是做二次开发和学习使用的。 也可以用这块板子搞搞吗?一个人弄的话感觉搞不定的,毕竟还不是你这样的大牛~ 看git_hub里面的代码更新好像也就S900在做。还有其他人在做其他板子吗?
大家都太忙了,所以参加的人不多。S900进行的也很慢。 没有关系的,你可以在自己的板子上做,遇到问题的话,我们可以在论坛里讨论,解决问题的过程,就是学习的过程。
ps:x宝买的bubblegum-900的board
【编译uboot】 make uboot 【报错如下】 calm@calm-pc:~/work/x_project/build$ make uboot mkdir -p /home/calm/work/x_project/build/out/u-boot make -C /home/calm/work/x_project/build/../u-boot CROSS_COMPILE=/home/calm/work/x_project/build/../tools/common/gcc-linaro-4.9-2015.02-3-x86_64_aarch64-linux-gnu/bin/aarch64-linux-gnu- KBUILD_OUTPUT=/home/calm/work/x_project/build/out/u-boot bubblegum_defconfig make[1]: Entering directory '/home/calm/work/x_project/u-boot' make[2]: Entering directory '/home/calm/work/x_project/build/out/u-boot' GEN ./Makefile HOSTCC scripts/kconfig/zconf.tab.o scripts/kconfig/zconf.tab.c:199:24: fatal error: zconf.hash.c: No such file or directory compilation terminated. scripts/Makefile.host:111: recipe for target 'scripts/kconfig/zconf.tab.o' failed make[3]: *** Error 1 /home/calm/work/x_project/u-boot/Makefile:477: recipe for target 'bubblegum_defconfig' failed make[2]: *** [bubblegum_defconfig] Error 2 make[2]: Leaving directory '/home/calm/work/x_project/build/out/u-boot' Makefile:150: recipe for target 'sub-make' failed make[1]: *** Error 2 make[1]: Leaving directory '/home/calm/work/x_project/u-boot' Makefile:53: recipe for target 'uboot' failed make: *** Error 2
看来问题原因是 zconf.hash.c文件找不到,而且执行“x_project/build/out/u-boot/scripts/kconfig$ vi zconf.tab.c”,确实发现该文件有#include "zconf.hash.c" ,请问一下是那里出现问题了呢?
calm.xia 写道: ps:x宝买的bubblegum-900的board
【编译uboot】 make uboot 【报错如下】 calm@calm-pc:~/work/x_project/build$ make uboot mkdir -p /home/calm/work/x_project/build/out/u-boot make -C /home/calm/work/x_project/build/../u-boot CROSS_COMPILE=/home/calm/work/x_project/build/../tools/common/gcc-linaro-4.9-2015.02-3-x86_64_aarch64-linux-gnu/bin/aarch64-linux-gnu- KBUILD_OUTPUT=/home/calm/work/x_project/build/out/u-boot bubblegum_defconfig make[1]: Entering directory '/home/calm/work/x_project/u-boot' make[2]: Entering directory '/home/calm/work/x_project/build/out/u-boot' GEN ./Makefile HOSTCC scripts/kconfig/zconf.tab.o scripts/kconfig/zconf.tab.c:199:24: fatal error: zconf.hash.c: No such file or directory compilation terminated. scripts/Makefile.host:111: recipe for target 'scripts/kconfig/zconf.tab.o' failed make[3]: *** Error 1 /home/calm/work/x_project/u-boot/Makefile:477: recipe for target 'bubblegum_defconfig' failed make[2]: *** [bubblegum_defconfig] Error 2 make[2]: Leaving directory '/home/calm/work/x_project/build/out/u-boot' Makefile:150: recipe for target 'sub-make' failed make[1]: *** Error 2 make[1]: Leaving directory '/home/calm/work/x_project/u-boot' Makefile:53: recipe for target 'uboot' failed make: *** Error 2
看来问题原因是 zconf.hash.c文件找不到,而且执行“x_project/build/out/u-boot/scripts/kconfig$ vi zconf.tab.c”,确实发现该文件有#include "zconf.hash.c" ,请问一下是那里出现问题了呢?
u-boot目录下,执行一下“make mrproper”试试?
wowo 写道:
calm.xia 写道: ps:x宝买的bubblegum-900的board
【编译uboot】 make uboot 【报错如下】 calm@calm-pc:~/work/x_project/build$ make uboot mkdir -p /home/calm/work/x_project/build/out/u-boot make -C /home/calm/work/x_project/build/../u-boot CROSS_COMPILE=/home/calm/work/x_project/build/../tools/common/gcc-linaro-4.9-2015.02-3-x86_64_aarch64-linux-gnu/bin/aarch64-linux-gnu- KBUILD_OUTPUT=/home/calm/work/x_project/build/out/u-boot bubblegum_defconfig make[1]: Entering directory '/home/calm/work/x_project/u-boot' make[2]: Entering directory '/home/calm/work/x_project/build/out/u-boot' GEN ./Makefile HOSTCC scripts/kconfig/zconf.tab.o scripts/kconfig/zconf.tab.c:199:24: fatal error: zconf.hash.c: No such file or directory compilation terminated. scripts/Makefile.host:111: recipe for target 'scripts/kconfig/zconf.tab.o' failed make[3]: *** Error 1 /home/calm/work/x_project/u-boot/Makefile:477: recipe for target 'bubblegum_defconfig' failed make[2]: *** [bubblegum_defconfig] Error 2 make[2]: Leaving directory '/home/calm/work/x_project/build/out/u-boot' Makefile:150: recipe for target 'sub-make' failed make[1]: *** Error 2 make[1]: Leaving directory '/home/calm/work/x_project/u-boot' Makefile:53: recipe for target 'uboot' failed make: *** Error 2
看来问题原因是 zconf.hash.c文件找不到,而且执行“x_project/build/out/u-boot/scripts/kconfig$ vi zconf.tab.c”,确实发现该文件有#include "zconf.hash.c" ,请问一下是那里出现问题了呢?
u-boot目录下,执行一下“make mrproper”试试?
HI。直接在已经编译过的u-boot目录下执行“make mrproper”还是不行,报的错误还是上面原来的错误。之后我尝试将build,tools,u-boot这三个目录下的编译生成的文件(ps:使用git status查看)都删除,然后重新cd build目录执行: make libusb,make dfu,make uboot,后不报上面的错误,报了如下错误: tart=$(/home/calm/work/x_project/build/../tools/common/gcc-linaro-4.9-2015.02-3-x86_64_aarch64-linux-gnu/bin/aarch64-linux-gnu-nm u-boot | grep __rel_dyn_start | cut -f 1 -d ' '); end=$(/home/calm/work/x_project/build/../tools/common/gcc-linaro-4.9-2015.02-3-x86_64_aarch64-linux-gnu/bin/aarch64-linux-gnu-nm u-boot | grep __rel_dyn_end | cut -f 1 -d ' '); tools/relocate-rela u-boot-nodtb.bin 0x11000000 $start $end /home/calm/work/x_project/u-boot/scripts/dtc-version.sh: line 17: dtc: command not found /home/calm/work/x_project/u-boot/scripts/dtc-version.sh: line 18: dtc: command not found *** Your dtc is too old, please upgrade to dtc 1.4 or newer /home/calm/work/x_project/u-boot/Makefile:1374: recipe for target 'checkdtc' failed make[2]: *** Error 1 make[2]: Leaving directory '/home/calm/work/x_project/build/out/u-boot' Makefile:150: recipe for target 'sub-make' failed make[1]: *** Error 2 make[1]: Leaving directory '/home/calm/work/x_project/u-boot' Makefile:53: recipe for target 'uboot' failed make: *** Error 2
这个错误就好解决了,网上搜了,dtc是device-tree-compiler的缩写,直接安装即可: sudo apt-get install device-tree-compiler 之后再 make uboot既可以成功编译了!
calm.xia 写道:
wowo 写道:
calm.xia 写道: ps:x宝买的bubblegum-900的board
【编译uboot】 make uboot 【报错如下】 calm@calm-pc:~/work/x_project/build$ make uboot mkdir -p /home/calm/work/x_project/build/out/u-boot make -C /home/calm/work/x_project/build/../u-boot CROSS_COMPILE=/home/calm/work/x_project/build/../tools/common/gcc-linaro-4.9-2015.02-3-x86_64_aarch64-linux-gnu/bin/aarch64-linux-gnu- KBUILD_OUTPUT=/home/calm/work/x_project/build/out/u-boot bubblegum_defconfig make[1]: Entering directory '/home/calm/work/x_project/u-boot' make[2]: Entering directory '/home/calm/work/x_project/build/out/u-boot' GEN ./Makefile HOSTCC scripts/kconfig/zconf.tab.o scripts/kconfig/zconf.tab.c:199:24: fatal error: zconf.hash.c: No such file or directory compilation terminated. scripts/Makefile.host:111: recipe for target 'scripts/kconfig/zconf.tab.o' failed make[3]: *** Error 1 /home/calm/work/x_project/u-boot/Makefile:477: recipe for target 'bubblegum_defconfig' failed make[2]: *** [bubblegum_defconfig] Error 2 make[2]: Leaving directory '/home/calm/work/x_project/build/out/u-boot' Makefile:150: recipe for target 'sub-make' failed make[1]: *** Error 2 make[1]: Leaving directory '/home/calm/work/x_project/u-boot' Makefile:53: recipe for target 'uboot' failed make: *** Error 2
看来问题原因是 zconf.hash.c文件找不到,而且执行“x_project/build/out/u-boot/scripts/kconfig$ vi zconf.tab.c”,确实发现该文件有#include "zconf.hash.c" ,请问一下是那里出现问题了呢?
u-boot目录下,执行一下“make mrproper”试试?
HI。直接在已经编译过的u-boot目录下执行“make mrproper”还是不行,报的错误还是上面原来的错误。之后我尝试将build,tools,u-boot这三个目录下的编译生成的文件(ps:使用git status查看)都删除,然后重新cd build目录执行: make libusb,make dfu,make uboot,后不报上面的错误,报了如下错误: tart=$(/home/calm/work/x_project/build/../tools/common/gcc-linaro-4.9-2015.02-3-x86_64_aarch64-linux-gnu/bin/aarch64-linux-gnu-nm u-boot | grep __rel_dyn_start | cut -f 1 -d ' '); end=$(/home/calm/work/x_project/build/../tools/common/gcc-linaro-4.9-2015.02-3-x86_64_aarch64-linux-gnu/bin/aarch64-linux-gnu-nm u-boot | grep __rel_dyn_end | cut -f 1 -d ' '); tools/relocate-rela u-boot-nodtb.bin 0x11000000 $start $end /home/calm/work/x_project/u-boot/scripts/dtc-version.sh: line 17: dtc: command not found /home/calm/work/x_project/u-boot/scripts/dtc-version.sh: line 18: dtc: command not found *** Your dtc is too old, please upgrade to dtc 1.4 or newer /home/calm/work/x_project/u-boot/Makefile:1374: recipe for target 'checkdtc' failed make[2]: *** Error 1 make[2]: Leaving directory '/home/calm/work/x_project/build/out/u-boot' Makefile:150: recipe for target 'sub-make' failed make[1]: *** Error 2 make[1]: Leaving directory '/home/calm/work/x_project/u-boot' Makefile:53: recipe for target 'uboot' failed make: *** Error 2
这个错误就好解决了,网上搜了,dtc是device-tree-compiler的缩写,直接安装即可: sudo apt-get install device-tree-compiler 之后再 make uboot既可以成功编译了!
:cool:
下载splboot.bin后,LED灯点不亮~ ,该如何debug?
calm.xia 写道: 下载splboot.bin后,LED灯点不亮~ ,该如何debug?
ADFU下载的log如下: sudo ../tools/dfu/dfu bubblegum 0xe406b200 ../tools/actions/splboot.bin 1 sudo: unable to resolve host calm-pc board bubblegum address 0xe406b200 filename ../tools/actions/splboot.bin need_run 1 bDescriptorType: 1 bNumConfigurations: 1 iManufacturer: 0 bNumInterfaces: 1 Info: cannot detach kernel driver: LIBUSB_ERROR_NOT_FOUND (no worry) Configuiration: 1 Handler: 0x2601a10 CBW: 55 53 42 43 00 00 00 00 83 43 00 00 00 00 10 05 00 b2 06 e4 83 43 00 00 00 00 00 00 00 00 00 Bulk transferred 17283 bytes CSW:55534253000000000000000000 CBW: 55 53 42 43 00 00 00 00 00 00 00 00 00 00 00 10 00 b2 06 e4 00 00 00 00 00 00 00 00 00 00 00 Transffered: 31 CSW:55534253000000000000000000
calm.xia 写道:
calm.xia 写道: 下载splboot.bin后,LED灯点不亮~ ,该如何debug?
ADFU下载的log如下: sudo ../tools/dfu/dfu bubblegum 0xe406b200 ../tools/actions/splboot.bin 1 sudo: unable to resolve host calm-pc board bubblegum address 0xe406b200 filename ../tools/actions/splboot.bin need_run 1 bDescriptorType: 1 bNumConfigurations: 1 iManufacturer: 0 bNumInterfaces: 1 Info: cannot detach kernel driver: LIBUSB_ERROR_NOT_FOUND (no worry) Configuiration: 1 Handler: 0x2601a10 CBW: 55 53 42 43 00 00 00 00 83 43 00 00 00 00 10 05 00 b2 06 e4 83 43 00 00 00 00 00 00 00 00 00 Bulk transferred 17283 bytes CSW:55534253000000000000000000 CBW: 55 53 42 43 00 00 00 00 00 00 00 00 00 00 00 10 00 b2 06 e4 00 00 00 00 00 00 00 00 00 00 00 Transffered: 31 CSW:55534253000000000000000000
现在最新版本的spl,启动之后,就初始化DDR,然后直接重启了:
[== Undefined ==]
void board_init_f(ulong bootflag)
{
bubblegum_early_debug(1);
#ifdef HAS_DDR_SOURCE_CODE
s900_ddr_init(;
#endif
reboot_to_adfu(;
}
具体可参考“(/forum/)”的任务总结。 不知道你是怎么操作的?你可以把reboot_to_dfu替换为while (1); 然后自己编译出来一个spl的bin文件,再试试。
PS:看你的发帖时间,太晚了,注意身体哦。 我们的任务之所以拆的这么细,就是想让大家在1个小时内,就可以消化完一个事情,然后细水才能长流
wowo 写道:
calm.xia 写道:
calm.xia 写道: 下载splboot.bin后,LED灯点不亮~ ,该如何debug?
ADFU下载的log如下: sudo ../tools/dfu/dfu bubblegum 0xe406b200 ../tools/actions/splboot.bin 1 sudo: unable to resolve host calm-pc board bubblegum address 0xe406b200 filename ../tools/actions/splboot.bin need_run 1 bDescriptorType: 1 bNumConfigurations: 1 iManufacturer: 0 bNumInterfaces: 1 Info: cannot detach kernel driver: LIBUSB_ERROR_NOT_FOUND (no worry) Configuiration: 1 Handler: 0x2601a10 CBW: 55 53 42 43 00 00 00 00 83 43 00 00 00 00 10 05 00 b2 06 e4 83 43 00 00 00 00 00 00 00 00 00 Bulk transferred 17283 bytes CSW:55534253000000000000000000 CBW: 55 53 42 43 00 00 00 00 00 00 00 00 00 00 00 10 00 b2 06 e4 00 00 00 00 00 00 00 00 00 00 00 Transffered: 31 CSW:55534253000000000000000000
现在最新版本的spl,启动之后,就初始化DDR,然后直接重启了:
[== Undefined ==]
void board_init_f(ulong bootflag)
{
bubblegum_early_debug(1);
#ifdef HAS_DDR_SOURCE_CODE
s900_ddr_init(;
#endif
reboot_to_adfu(;
}
具体可参考“(/forum/)”的任务总结。 不知道你是怎么操作的?你可以把reboot_to_dfu替换为while (1); 然后自己编译出来一个spl的bin文件,再试试。
PS:看你的发帖时间,太晚了,注意身体哦。 我们的任务之所以拆的这么细,就是想让大家在1个小时内,就可以消化完一个事情,然后细水才能长流
谢谢提醒,我会注意早点休息的!
另,改成while(1);后,LED依然点不亮。 我的操作如下: 其实我没做什么修改,就直接git clone了build,tools,u-boot,然后直接编译了,(因为我看到里面的文件都是针对bubblegum修改好的了),然后就烧录进板子了。我还使用了代码中tools/actions目录下的splboot.bin,结果也点不亮。
calm.xia 写道:
wowo 写道:
calm.xia 写道:
calm.xia 写道: 下载splboot.bin后,LED灯点不亮~ ,该如何debug?
ADFU下载的log如下: sudo ../tools/dfu/dfu bubblegum 0xe406b200 ../tools/actions/splboot.bin 1 sudo: unable to resolve host calm-pc board bubblegum address 0xe406b200 filename ../tools/actions/splboot.bin need_run 1 bDescriptorType: 1 bNumConfigurations: 1 iManufacturer: 0 bNumInterfaces: 1 Info: cannot detach kernel driver: LIBUSB_ERROR_NOT_FOUND (no worry) Configuiration: 1 Handler: 0x2601a10 CBW: 55 53 42 43 00 00 00 00 83 43 00 00 00 00 10 05 00 b2 06 e4 83 43 00 00 00 00 00 00 00 00 00 Bulk transferred 17283 bytes CSW:55534253000000000000000000 CBW: 55 53 42 43 00 00 00 00 00 00 00 00 00 00 00 10 00 b2 06 e4 00 00 00 00 00 00 00 00 00 00 00 Transffered: 31 CSW:55534253000000000000000000
现在最新版本的spl,启动之后,就初始化DDR,然后直接重启了:
[== Undefined ==]
void board_init_f(ulong bootflag)
{
bubblegum_early_debug(1);
#ifdef HAS_DDR_SOURCE_CODE
s900_ddr_init(;
#endif
reboot_to_adfu(;
}
具体可参考“(/forum/)”的任务总结。 不知道你是怎么操作的?你可以把reboot_to_dfu替换为while (1); 然后自己编译出来一个spl的bin文件,再试试。
PS:看你的发帖时间,太晚了,注意身体哦。 我们的任务之所以拆的这么细,就是想让大家在1个小时内,就可以消化完一个事情,然后细水才能长流
谢谢提醒,我会注意早点休息的!
另,改成while(1);后,LED依然点不亮。 我的操作如下: 其实我没做什么修改,就直接git clone了build,tools,u-boot,然后直接编译了,(因为我看到里面的文件都是针对bubblegum修改好的了),然后就烧录进板子了。我还使用了代码中tools/actions目录下的splboot.bin,结果也点不亮。
我这边的日志是: pengo@ubuntu:~/work/xprj/build$ sudo ../tools/dfu/dfu bubblegum 0xe406b200 ../tools/actions/splboot.bin 1 password for pengo: board bubblegum address 0xe406b200 filename ../tools/actions/splboot.bin need_run 1 bDescriptorType: 1 bNumConfigurations: 1 iManufacturer: 0 bNumInterfaces: 1 Info: cannot detach kernel driver: LIBUSB_ERROR_NOT_FOUND (no worry) Configuiration: 1 Handler: 0x9a91160 CBW: 55 53 42 43 00 00 00 00 83 43 00 00 00 00 10 05 00 b2 06 e4 83 43 00 00 00 00 00 00 00 00 00 Bulk transferred 17283 bytes CSW:55534253000000000000000000 CBW: 55 53 42 43 00 00 00 00 00 00 00 00 00 00 00 10 00 b2 06 e4 00 00 00 00 00 00 00 00 00 00 00 Transffered: 31 CSW:55534253000000000000000000 看起来一模一样,奇怪?
wowo 写道:
calm.xia 写道:
wowo 写道:
calm.xia 写道:
calm.xia 写道: 下载splboot.bin后,LED灯点不亮~ ,该如何debug?
ADFU下载的log如下: sudo ../tools/dfu/dfu bubblegum 0xe406b200 ../tools/actions/splboot.bin 1 sudo: unable to resolve host calm-pc board bubblegum address 0xe406b200 filename ../tools/actions/splboot.bin need_run 1 bDescriptorType: 1 bNumConfigurations: 1 iManufacturer: 0 bNumInterfaces: 1 Info: cannot detach kernel driver: LIBUSB_ERROR_NOT_FOUND (no worry) Configuiration: 1 Handler: 0x2601a10 CBW: 55 53 42 43 00 00 00 00 83 43 00 00 00 00 10 05 00 b2 06 e4 83 43 00 00 00 00 00 00 00 00 00 Bulk transferred 17283 bytes CSW:55534253000000000000000000 CBW: 55 53 42 43 00 00 00 00 00 00 00 00 00 00 00 10 00 b2 06 e4 00 00 00 00 00 00 00 00 00 00 00 Transffered: 31 CSW:55534253000000000000000000
现在最新版本的spl,启动之后,就初始化DDR,然后直接重启了:
[== Undefined ==]
void board_init_f(ulong bootflag)
{
bubblegum_early_debug(1);
#ifdef HAS_DDR_SOURCE_CODE
s900_ddr_init(;
#endif
reboot_to_adfu(;
}
具体可参考“(/forum/)”的任务总结。 不知道你是怎么操作的?你可以把reboot_to_dfu替换为while (1); 然后自己编译出来一个spl的bin文件,再试试。
PS:看你的发帖时间,太晚了,注意身体哦。 我们的任务之所以拆的这么细,就是想让大家在1个小时内,就可以消化完一个事情,然后细水才能长流
谢谢提醒,我会注意早点休息的!
另,改成while(1);后,LED依然点不亮。 我的操作如下: 其实我没做什么修改,就直接git clone了build,tools,u-boot,然后直接编译了,(因为我看到里面的文件都是针对bubblegum修改好的了),然后就烧录进板子了。我还使用了代码中tools/actions目录下的splboot.bin,结果也点不亮。
我这边的日志是: pengo@ubuntu:~/work/xprj/build$ sudo ../tools/dfu/dfu bubblegum 0xe406b200 ../tools/actions/splboot.bin 1 password for pengo: board bubblegum address 0xe406b200 filename ../tools/actions/splboot.bin need_run 1 bDescriptorType: 1 bNumConfigurations: 1 iManufacturer: 0 bNumInterfaces: 1 Info: cannot detach kernel driver: LIBUSB_ERROR_NOT_FOUND (no worry) Configuiration: 1 Handler: 0x9a91160 CBW: 55 53 42 43 00 00 00 00 83 43 00 00 00 00 10 05 00 b2 06 e4 83 43 00 00 00 00 00 00 00 00 00 Bulk transferred 17283 bytes CSW:55534253000000000000000000 CBW: 55 53 42 43 00 00 00 00 00 00 00 00 00 00 00 10 00 b2 06 e4 00 00 00 00 00 00 00 00 00 00 00 Transffered: 31 CSW:55534253000000000000000000 看起来一模一样,奇怪?
你的PC环境是什么呢?官方的固件能不能用呢?
1.我的PC是thinkpad t440笔记本,安装了ubuntu 16.04 LTS系统(64bit); 2.官方的固件没试过,在官网可以下载吗?
calm.xia 写道: 1.我的PC是thinkpad t440笔记本,安装了ubuntu 16.04 LTS系统(64bit); 2.官方的固件没试过,在官网可以下载吗?
Linaro had released a tools, pls see: (https://github.com/96boards-bubblegum/linaro-adfu-tool) You can try it, or, using another PC.
现在板子(bubblegum 96)的LED灯是点亮了,但是有点问题,大概整理如下: 1. 结果: LED灯亮 环境: 台式机+win10+vmware10+ubuntu12.04 工具: x_project代码仓库的build目录和tools目录,并make libusb 和 make dfu image: tools/actions/spluboot.bin download: 插入usb线,按住ADFU键,插入电源,build目录下执行 sudo ../tools/dfu/dfu bubblegum 0xe406b200 ../tools/actions/spluboot.bin 1
- 结果: LED灯不亮 环境: 笔记本thinkpad t440p+ubuntu16.04和ubuntu14.04 工具: 同上 image: 同上 download: 同上
由于笔记本安装ubuntu12.04出了点问题没有安装成功,所以这种情况没结果。 现在的问题是: 不同环境下,LED灯出现点亮和无法点亮的问题,而且不同环境下download时的log都是一样的!!
calm.xia 写道: 现在板子(bubblegum 96)的LED灯是点亮了,但是有点问题,大概整理如下: 1. 结果: LED灯亮 环境: 台式机+win10+vmware10+ubuntu12.04 工具: x_project代码仓库的build目录和tools目录,并make libusb 和 make dfu image: tools/actions/spluboot.bin download: 插入usb线,按住ADFU键,插入电源,build目录下执行 sudo ../tools/dfu/dfu bubblegum 0xe406b200 ../tools/actions/spluboot.bin 1
- 结果: LED灯不亮 环境: 笔记本thinkpad t440p+ubuntu16.04和ubuntu14.04 工具: 同上 image: 同上 download: 同上
由于笔记本安装ubuntu12.04出了点问题没有安装成功,所以这种情况没结果。 现在的问题是: 不同环境下,LED灯出现点亮和无法点亮的问题,而且不同环境下download时的log都是一样的!!
多谢分享,等周末我看看能不能搞一个环境,重现一下这个问题。大家可以先按照calm同学的方法,用“win10+vmware10+ubuntu12.04”的环境,继续后面的事项。
