MyFPGA Forum

 找回密码
 注册
搜索
查看: 14328|回复: 18

preloader编译和更新

[复制链接]
发表于 2014-8-15 09:34:09 | 显示全部楼层 |阅读模式
本帖最后由 matthew_wang 于 2016-2-1 17:41 编辑

前面有介绍preloader在HPS boot过程中的的作用,接下来讲述下用户在SoCEDS环境下改如何编译preloader和uboot程序!以及如何去更新BOOT SD卡中的preloader和uboot!
从Terasic网站下下载的SD image是在13.1环境下编译出来的preloader和u-boot,这里会在14.0环境下重新编译并更新到SD卡中!并在inux系统下更新preloader和u-boot到SD卡中。(嵌入式linux 开发的还是需要一台linux 机器的,不管是虚拟机还是单独的linux系统机器!特别的在Compile linux kernel的时候)使用Quartus 14.0打开DE1_SoC_ghrd工程,进入Qsys打开HPS器件。相对于13.0主要变化是有了HPS Clocks窗口分为了Input Clocks 和Output Clocks!对比如下图:
HPS_Clock_131_副本.png                       HPS_Clcok_14_副本.png
14.0软件中Cyclone V 器件MPU 默认时钟为925Mhz,而13.1版为800M。这里编译不改变MPU的Clock,所以去掉use default MPU clock frequency选项!不用改其他的选项,Clock即为800MHz。重新generate 关闭就好了。使用Quarut编译编译完成后会有hps_isw_handoff中的文件会更新,这些文件时连接HPS硬件配置与preloaderr软件接口文件。
打开14.0中的command shell把工作目录转换到ghrd中,使用make -j8 sof开始编译硬件。(-j8 选项可以不带,只是为了多打开几个线程编译比较快,但是需要四核的CPU支持)。
使用bsp-editor.exe打开bsp-editor工具,选择file->New BSP。把Preloader setting directory指定为ghrd中的hps_isw_handoff/soc_system_hps_0。点击OK关闭。再点击Geneate生成BSP后exit BSP Editor。此时应该可以在GHRD中看到software目录了。接下来需要注意的是要把GHRD中的makefile用\embedded\examples\hardware\cv_soc_devkit_ghrd的Makefile换掉(13.0下编译不用替换)。然后使用 make uboot 命令会把preloader 和uboot文件都编译出来。如果只需要编译preloader,就使用make prelaoder好了。过程比较漫长,这里会重新编译一遍硬件工程。
编译完成后在software\preloader\uboot-socfpga 目录下会找到u-boot.img文件,在software\preloader\uboot-socfpga\spl下会找到u-boot-spi.bin。为了方便,在GHRD下建立目录preloader,把这两个文件复制到该目录!
u-boot-spi.bin为binary格式的文件,按照Altera的要求要按照特定格式添加文件头!需要使用到的工具为mkpimage工具。切换工具目录为刚刚建立的preloader目录,使用命令 mkpimage -o preloader_de1_soc.img u-boot-spl.bin 。此时文件夹下会产生一个preloader_de1_soc.img。 可以用于更新SD image中的preloader。

———————————————————————————————————————————————————
在更新之前,还是先说SoCEDS14.0中的一个工具alt-boot-disk-util.exe。在Command Shell 中输入这个名称就可以看见使用方法。
#Wirte BOOTLoader and PREloader to disk driver 'E'
  alt-boot-disk-util -p preloaer -b bootloader -a write -d E
我的SD Card 被识别为I盘,所以我使用的命令为:
alt-boot-disk-util -p preloaer_de1_soc.img -b u-boot.img -a write -d I
不给我目前使用都会遇到device open error的错误。不知道是环境问题还是其他原因。所以还是在Linux 系统下去更新preloader。


此遗留问题已经解决,请小伙伴们看13#答案
————————————————————————————————————————————————————

(个人使用的ubuntu linux 机器,其他版本应该类似)
把两份文件复制到linux 机器上,并挂载启动SD card。使用fisk -l 查看SD card 对应的节点编号。比如我的SD card 为8G,会看到这样的一条信息:Disk /dev/sdb: 7948 MB, 7948206080 bytes 。说明这个节点为 /dev/sdb。
linux 工作目录切换到preloader放置的地方后。分别使用下面两条命令更新preloader和 uboot。
sudo  dd if=preloader_de1_soc.img of=/dev/sdb3 bs=64k seek=0
sudo  dd if=u-boot.img of=/dev/sdb3 bs=64k seek=4

再使用下sudo sync 命令就可以弹出SD card 了。
使用这张SD boot,你会发现打印出Clock 相关的信息。这个是14.0中添加的打印。另外注意到时间戳应该与编译时间对应
preloader启动_副本.png
发表于 2014-8-15 11:05:49 | 显示全部楼层
MPU的clock有800改为925会有什么影响吗?
 楼主| 发表于 2014-8-15 15:25:42 | 显示全部楼层
linjionghui 发表于 2014-8-15 11:05
MPU的clock有800改为925会有什么影响吗?

目前看来,MPU clock 提高一般能够正常运行! 有时会遇到linux boot 不起来的问题!Altera 说目前还没有更新linux 为925M
发表于 2014-8-17 21:12:00 | 显示全部楼层
我使用make preloader时提示No rule to make target.这是为什么?
还有就是官方文档里面的make all生成的preloader-mkpimage.bin是用来生成preloader镜像文件吗?
跟你用u-boot-spl.bin的preloader_soc_de1.img有什么不同?
发表于 2014-9-24 16:40:28 | 显示全部楼层
本帖最后由 molushali 于 2014-9-24 16:41 编辑

你好,我想请问下,用13.1的bsp-editor.exe软件打开,在spl.boot 选择BOOT_FROM_SDMMC, make 的时候就会出错,如果选择 BOOT_FROM_QSPI 就不会出现错误,这是什么原因? 是我哪里设置的问题吗?
boot_from_SDMMC.jpg
make.jpg
发表于 2014-11-19 22:47:45 | 显示全部楼层
版主您好,我安装的官网SoCEDSSetup-14.0.2.274-windows.exe,运行SOC EDS Command shell后,生成preloader镜像的时候提示输入-HV,请问-HV怎么给参数
11.jpg
发表于 2014-11-19 22:49:10 | 显示全部楼层
随便给个参数,preloader又运行部起来
发表于 2014-11-23 22:18:09 | 显示全部楼层
人气不行啊?
 楼主| 发表于 2014-11-24 17:28:17 | 显示全部楼层
linjionghui 发表于 2014-8-17 21:12
我使用make preloader时提示No rule to make target.这是为什么?
还有就是官方文档里面的make all生成的pr ...

no rule 。。 应该是make file 中没有preloader这个target 的编译规则,可以makefile打开看看
另外一个文件我没有关注过    可以查altera的文档看看
 楼主| 发表于 2014-11-24 17:30:25 | 显示全部楼层
molushali 发表于 2014-9-24 16:40
你好,我想请问下,用13.1的bsp-editor.exe软件打开,在spl.boot 选择BOOT_FROM_SDMMC, make 的时候就会出 ...

这个更可能是环境问题吧   看你用的helio 的板子,是不是跟 ghrd 没有配置好呢   哈哈   乱猜的   可以用Terasic 的  ghrd 看看
 楼主| 发表于 2014-11-24 17:32:50 | 显示全部楼层
nyj981 发表于 2014-11-19 22:47
版主您好,我安装的官网SoCEDSSetup-14.0.2.274-windows.exe,运行SOC EDS Command shell后,生成preloader ...

我还没有更新到这个版本    可以看看 soceds 的user guide  或者使用帮助看看这个是什么意思。。
发表于 2014-11-24 23:32:49 | 显示全部楼层
多谢版主提醒
 楼主| 发表于 2016-2-1 17:40:25 | 显示全部楼层
2016.2.1 日解决遗留问题:

lt-boot-disk-util -p preloaer_de1_soc.img -b u-boot.img -a write -d I
不给我目前使用都会遇到device open error的错误。


关于文中提到的这个错误,遗留在这里没有研究!今天看到了Altera 在DS-5 的unhosted 例程中提到了这个工具,我又再试过两遍,发现依然是出来了evice open error的错误!
我笃定这个程序是没有问题的,关键还是方法!于是我尝试用管理员的身份运行这个程序,然后再使用这个命令,居然过了!不过提醒大家,这里使用的image是make 出来的一个叫preloader-mkpimage.bin 的文件,在spl-bsp 目录中使用make all命令产生出来

注:以管理员的身份运行需要进入到安装目录中找到command shell 这个程序,右键以后会看到以管理员身份运行
发表于 2017-9-14 16:56:28 | 显示全部楼层
你好 问一下 关于这个preloader的作用在哪里有介绍啊,初学者,多谢指教
发表于 2017-9-15 10:00:04 | 显示全部楼层
hezhen0215 发表于 2017-9-14 16:56
你好 问一下 关于这个preloader的作用在哪里有介绍啊,初学者,多谢指教

您好!

请参考这个链接:http://www.myfpga.org/discuz/for ... &extra=page%3D1 里面的内容。
发表于 2017-9-20 17:24:37 | 显示全部楼层
BOB_Sun 发表于 2017-9-15 10:00
您好!

请参考这个链接:http://www.myfpga.org/discuz/forum.php?mod=viewthread&tid=190006&extra=pag ...

谢谢!我还想问一下,DE1培训资料中有个文件altera-socfpga-hosted.ld,您知道这个文件作用是什么吗?怎么生成的?
发表于 2017-9-21 15:55:56 | 显示全部楼层
hezhen0215 发表于 2017-9-20 17:24
谢谢!我还想问一下,DE1培训资料中有个文件altera-socfpga-hosted.ld,您知道这个文件作用是什么吗?怎 ...

您好!

altera-socfpga-hosted.ld文件是Altera的工具“Altera-SoCFPGA-HelloWorld-Baremetal-GNU” 里面的提供的,是用来链接脚本的,不需要自己生成。
发表于 2017-9-21 17:31:28 | 显示全部楼层
BOB_Sun 发表于 2017-9-21 15:55
您好!

altera-socfpga-hosted.ld文件是Altera的工具“Altera-SoCFPGA-HelloWorld-Baremetal-GNU” 里面 ...

非常感谢!刚开始接触,不太明白!
发表于 2017-12-4 09:55:43 | 显示全部楼层
nyj981 发表于 2014-11-19 22:47
版主您好,我安装的官网SoCEDSSetup-14.0.2.274-windows.exe,运行SOC EDS Command shell后,生成preloader ...


您好,需要加上-hv 0 如图
-hv.png
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|MyFPGA

GMT+8, 2024-3-28 18:30 , Processed in 0.131359 second(s), 18 queries .

Powered by Discuz! X3

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表