蜗窝科技

【任务2】启动到u-boot command line

蜗窝讨论区存档 · X Project · 楼主 wowo · 2016-06-01 · 8 帖

本文是原「蜗窝讨论区」的历史存档(2016-06-01),来自版块「X Project」,共 8 帖。讨论区已停止服务,此处仅供查阅。

wowo · 2016-06-01 22:26

  1. 任务说明 通过“【任务1】启动过程-Boot from USB”,我们已经可以通过USB将一个二进制文件,上传到板子的SRAM中并执行。基于此,我们可以展开第二个任务:启动到u-boot的命令行。完成该任务的基本步骤包括:

  2. 通过USB DFU操作,将u-boot SPL image上传到SRAM中并运行[/*]

  3. u-boot SPL,初始化板子的SDRAM后,退出[/*]

  4. 通过USB DFU操作,将u-boot image上传到SDRAM中并运行[/*]

  5. u-boot启动后,初始化UART,并执行UART console,进入命令行[/*]

  6. 涉及的知识点 该任务主要涉及如下知识点:

  7. SDRAM的配置和初始化(SDRAM driver)[/*]

  8. u-boot driver model[/*]

  9. u-boot device tree(和kernel中一模一样,可以统一学习)[/*]

  10. u-boot UART driver[/*]

  11. u-boot serial console[/*]

  12. u-boot command line[/*]

  13. 完成任务的思路 相比“【任务1】启动过程-Boot from USB”,该任务比较简单,可以拆分为几个独立的部分:

  14. SDRAM有关的任务。和具体的版型、SDRAM型号有关,代码量较小。 可以基于具体的板子,完成一篇SDRAM有关的硬件介绍的文章,并给出SDRAM初始化有关的步骤。然后在u-boot SPL的board_init_f函数中配置即可。[/*]

  15. u-boot driver model有关的介绍和分析,写一篇文章即可。[/*]

  16. u-boot device tree的编写、编译和使用,可以结合博客上的device tree的分析文章,从实战的角度,写一篇文章。[/*]

  17. u-boot UART driver的设计和编写,要基于driver model和device tree。 和u-boot的UART框架,以及具体的板子有关,可以出两份文章,一份介绍具体板子UART有关的硬件,一份介绍u-boot的UART框架。文档完成后,直接编写具体板子的代码即可。[/*]

  18. u-boot serial console和command line有关的内容,不需要任何的实现,可以写一篇文章,介绍相应的机制,以及使用方式。[/*]

  19. u-boot启动流程的第2部分,从u-boot开始,到command line出来,可以写一篇介绍文章。[/*]

最后还是希望大家能捡一些力所能及的任务,和我们一起开发,不然我们全包了的话,太木有意思了(说实话,这些事情对我们来说太小菜一碟了),呵呵~~

  1. 任务总结 到目前为止(2016/07/27),该任务在bubblegum 96boards上基本完成,共有如下的文档和代码产出:

  2. (/u-boot/boot_flow_2.html)[/*]

  3. X-004-UBOOT-串口驱动移植(Bubblegum-96平台)[/*]

  4. X-005-UBOOT-device tree移植(Bubblegum-96平台)[/*]

  5. X-006-UBOOT-pinctrl driver移植(Bubblegum-96平台)[/*]

  6. X-007-UBOOT-DDR的初始化(Bubblegum-96平台)[/*]

  7. X-008-UBOOT-支持命令行(Bubblegum-96平台)[/*]

其中“X-005-UBOOT-device tree移植(Bubblegum-96平台)”、“X-006-UBOOT-pinctrl driver移植(Bubblegum-96平台)”并不是该任务的必要步骤。而“X-007-UBOOT-DDR的初始化(Bubblegum-96平台)”,为关键步骤,但受限于资源的缺乏,无法给大家呈现移植过程。

可以通过如下步骤在板子上验证: 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)按住Bubblegum-96的ADFU键,使板子进入DFU模式

4)按住Bubblegum-96的ADFU键不松开,将splboot.bin(就是我们的SPL image)上传到SRAM并执行


[== Undefined ==]
sudo ../tools/dfu/dfu bubblegum 0xe406b200 ../tools/actions/splboot.bin 1

5)执行完毕后,会重新进入DFU模式,进入后,可以松开ADFU按键。

6)将u-boot上传到DDR并执行(注意上传位置和CONFIG_SYS_TEXT_BASE 一致)


[== Undefined ==]
sudo ../tools/dfu/dfu bubblegum 0x11000000 out/u-boot/u-boot-dtb.bin 1

7)使用串口连接开发板,将可以进入命令行。

Codingbelief · 2016-06-01 23:56

我先认领个 SDRAM 的任务吧~ @wowo 有没有大概的 Deadline ?

wowo · 2016-06-02 08:56

Codingbelief 写道: 我先认领个 SDRAM 的任务吧~ @wowo 有没有大概的 Deadline ?

欢迎欢迎,我们没有schedule压力,因此没有deadline,大家玩的开心就行了。 SDRAM我觉得有两个重点:一是SDRAM本身,不知道容易搞到相应的资料不;二是要考虑一下SRAM driver的位置,SDRAM应该是machine和board的代码结合,但现在的思路是要跑起mach-xxx的概念,要想想怎样合适。 做的过程中大家可以在这里多讨论讨论。

wowo · 2016-06-02 10:42

wowo 写道:

Codingbelief 写道: 我先认领个 SDRAM 的任务吧~ @wowo 有没有大概的 Deadline ?

欢迎欢迎,我们没有schedule压力,因此没有deadline,大家玩的开心就行了。 SDRAM我觉得有两个重点:一是SDRAM本身,不知道容易搞到相应的资料不;二是要考虑一下SRAM driver的位置,SDRAM应该是machine和board的代码结合,但现在的思路是要跑起mach-xxx的概念,要想想怎样合适。 做的过程中大家可以在这里多讨论讨论。

补充一下bubblegum所使用的SDRAM的信息(板子后面可以看到): 两颗LPDDR,型号为K4E8E304EE-EGC 8Gb 1CH x32 K4E8E304EE-EGCE 178-FBGA, 11x11.5, DDP, 1600Mbps 1.8V/1.2V/1.2V Now (http://www.samsung.com/us/samsungsemiconductor/pdfs/PSG2014_2H_FINAL.pdf)

奔跑的蜗牛 · 2016-06-02 16:58

2 u-boot driver model有关的介绍和分析,写一篇文章即可。 --->这个我来吧。

wowo · 2016-06-02 17:10

奔跑的蜗牛 写道: 2 u-boot driver model有关的介绍和分析,写一篇文章即可。 --->这个我来吧。

多谢,鼓掌欢迎~~~~

lutingleo · 2016-07-01 16:14

这个uboot就是实现fastboot类似的功能么?

wowo · 2016-07-01 17:16

lutingleo 写道: 这个uboot就是实现fastboot类似的功能么?

是的。