找回密码
 注册
关于网站域名变更的通知
查看: 272|回复: 2
打印 上一主题 下一主题

转——FPGA与ARM的窃窃私语

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2019-4-15 11:08 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

EDA365欢迎您登录!

您需要 登录 才可以下载或查看,没有帐号?注册

x
转——FPGAARM的窃窃私语
喜大普奔,公司要评估用SOC做产品,我就自然而然的被安排了学习和评估的工作,于是,每天的工作就是开始研究soc了。其实,只要能静下心来学习,一切都还是能够弄出来的。

6 y! d8 U( ^; E8 A: B
以前像个无头苍蝇一样到处乱撞,搞了两三个月没把fpgaarm给联通起来,尽然只是因为教程用的Quartus II13.1软件和我自己电脑上装的Quartus II14.1软件在生成dts时调用的一个文件不一样导致的。当然,这个只是外在原因,真正内在的原因还是因为内在对linux的恐惧,因为是零linux基础,所以全部linux下命令都是第一次接触,于是各种错误各种不通,最后就放弃了。但是,心里总是不愿就这么放弃了,总想学会这门新技术。于是前两天又花钱买了周立功的ARM9开发板,然后跟着他提供的教程慢慢学习。终于是能够简单的进行一些linux下的命令操作了,昨天再次上手DE1—SOC,终于成功的生成了preloaderDTS,并通过HPS控制了FPGA端的LED
7 O" I' P8 F' a) o2 h: Z3 u: Z/ |
相信很多参加此次活动或者自学SOC的筒子也都有过我以上这段经历,这里,我愿意把我遇到的问题和解决方法提出来,希望那些还卡在这些问题的地方的筒子能够快速走出困境。
; P) t" O$ f+ B9 d% d0 V9 \. s
         我此次学习是跟着友晶提供的培训教材一步一步来进行的,该培训教材中,使用的是Quartus II13.1的软件,而我在使用的时候,直接安装的Quartus II 14.1。而也正是这样一个选择,让我被坑了好几天,最终放弃沉寂了好久,直到昨天,在网友微末凡尘的指导下,才执行成功。

9 @7 Q# d4 c" Y# L* r! P, O- V5 T% m) U
首先,在教材的第49页,在hps clock选项卡上,需要进行一下更改,具体我也是看了骏龙科技的一篇文章《SoCEDS环境下编译和更新preloaderuboot程序的方法》才知道的,原文如下:
6 J: w4 ^* K/ I

& }  u" P: G: e9 ]. D$ t. C$ F
相对于13.0主要变化是有了HPS Clocks窗口分为了Input Clocks Output Clocks!对比如下图:
3 U8 ~# K. Y6 {, B
/ V; l* W" D+ T1 E9 N
' p. e: m! x; C7 `
Quartus 13.0 HPS Clocks窗口
  ^8 B1 b' s6 h. m
! o3 g- G0 @9 K# q
Quartus 14.0 HPS Clocks窗口
5 b8 W2 T: D) g# O0 q# r

% [& l3 u0 p/ Z& M/ ], {' Q& G14.0
软件中Cyclone V 器件MPU 默认时钟为925Mhz,13.1版为800M。这里编译不改变MPUClock,所以去掉usedefault MPU clock frequency选项!不用改其他的选项,Clock即为800MHz。重新generate 关闭就好了。使用Quarut编译编译完成后会有hps_isw_handoff中的文件会更新,这些文件时连接HPS硬件配置与preloaderr软 件接口文件。
. Y2 }) `+ i: \5 v5 o" `0 @
# w# t1 |% H% c- J

+ s9 \" H, j/ R2 t

6 |* @/ q9 \* r! b% f
这里文中说的14.0,但是14.014.1在这一点上没有区别,因此,直接按照文中的内容操作即可。
4 [3 t. D9 l0 m% ^. U
5 f' \. O% t" T( ?% }6 @
53页最后一行,说要求将pio_0重命名为led_pio,这里一定要注意并保持一致,否则生成dts时会报错。同理,button_pio也是一样,名字最好不要错。个人感觉,初学,尽量不要标新立异,尤其是对环境不熟的,否则都不知道死在哪里。
; g: w' E0 d5 k- O4 U, w7 }- ]

- I; s2 R6 n/ y& R
83页最后一句话,我直接按照文档中的命令内容敲进去,会报错,提示我少了-hv参数,如下图所示:
! \4 }3 ~7 @. j
% ]" P' E5 q# a+ D7 `8 x
这里我也不懂是怎么回事,既然说少了个参数,就加个参数呗,于是我将命令内容改为:
2 B: R- K, m2 ~# u8 _
mkpimage –hv 0 –opreloader_with_header.img u-boot-spl.bin
7 Z5 R; b& q9 t$ R
然后就能成功了。
  P4 ]6 [/ {/ ^1 S

, {! d  v, n/ v0 i0 r
85页,生成DTS的时候,这个地方是变化最大的一个地方,我就是因为这个地方,才被卡了很久。这页的最后一段,说生成dts需要的四个文件为

9 W, {/ X: k# ~) w- j' R
  • soc_system.sopcinfo
  • hps_clock_info.xml
  • soc_system_board_info.xml
  • Makefile
    $ R1 q" m$ v- B
* d" F# K3 M5 w
那么,如果我们直接使用这三个文件,用原来的Makefile文件来生成dtsdtb,都会报错,dts能够生成,但是有错误,dtb直接无法生成。原因就在于,在Quartus II14.1的软件中,第二个使用的不再是hps_clock_info.xml文件,而是hps_common_board_info.xml。这个文件我们可以在SOCEDS软件安装目录下的examples\hardware\cv_soc_devkit_ghrd文件夹下找到,我的电脑中的绝对位置为
( [' j$ {' ?4 K" X
D:\altera\14.1\embedded\examples\hardware\cv_soc_devkit_ghrd

" I  a: l+ X1 D* y6 f% b$ M: T
我们将其中的两个xml文件hps_common_board_info.xmlsoc_system_board_info.xml和一个Makefile复制出来,粘贴到我们自己的工程目录下,并将原来的三个文件删除即可。再次make dts,就能够成功了,当然这个过程比较长,需要25分钟。然后,待dts生成完成后,再次make dtb,就很快,也能成功了。

- Q& w) d. c( N5 W
注意,如果按照第86页最后一段来自己敲命令进行生成dts,则需要将命令中对应的

+ ?0 c1 B: l6 Y7 T  `4 R  {- U# o9 T

6 L4 F) P) j8 w6 e9 s4 t( u* ?- S+ s; l2 K
7 e. ]5 U6 L, D4 O* U( Q
hps_clock_info.xml替换为hps_common_board_info.xml。为了简便推荐大家直接使用“makedts”命令来操作。后面生成dtb的也是一样,直接使用“make dtb”命令就行了,详见教材88页最后一段。

5 d$ T# w' V, B1 t1 i
自此,后面的就没有其他问题了,对着该教材一步一步的进行,最终都能运行出正确的结果。只是,在做de1_soc_sw_lab3中的实验时,原本提供的main.c文件里面使用的fpga端的led的名字叫pio_led,而我们的Qsys系统中命名为led_pio,因此直接使用该c文件生成可执行文件时会报错,需要将其中的第40行的“PIO_LED_BASE”改为“LED_PIO_BASE”。第59行的“PIO_LED_DATA_WIDTH”改为“LED_PIO_DATA_WIDTH”。然后就能生成成功了。
7 d) Z0 P0 G& `" ^3 G0 M
6 ~# L: |6 l* C& C8 _/ F7 s
执行实验3生成的可执行文件,能够看到开发板上FPGA端的10个红色LED灯流水60次,然后停止。
好了,就写到这里,文字不够详细,若有疏漏或错误,欢迎各位指出。具体效果,就不上图啦。

- N$ Z2 \! ^0 |5 J1 x% X, j9 A* T
  n, u8 G: _+ K) O0 P0 s( ?

该用户从未签到

2#
发表于 2019-4-15 17:29 | 只看该作者
讲的还是蛮不错的

该用户从未签到

3#
发表于 2019-4-15 17:30 | 只看该作者
let me look carefully, o9 ?4 J8 a2 D- E. K3 {- m
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

推荐内容上一条 /1 下一条

EDA365公众号

关于我们|手机版|EDA365电子论坛网 ( 粤ICP备18020198号-1 )

GMT+8, 2025-7-30 06:40 , Processed in 0.109375 second(s), 23 queries , Gzip On.

深圳市墨知创新科技有限公司

地址:深圳市南山区科技生态园2栋A座805 电话:19926409050

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