TA的每日心情 | 怒 2019-11-20 15:22 |
|---|
签到天数: 2 天 [LV.1]初来乍到
|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
废话不多说了,继续······7 j! p" K- ]! I+ w' F4 k/ b
4 y5 k' H& k) s+ \& t. t
在我们的源码目录下是不是还有一个这样的文件?
0 _! X4 g0 v8 U+ {6 K) \7 @
$ u N0 C$ }$ K2 |# @/ b! U* N
0 {' g2 R( b* [9 b7 l: p
* M2 c/ R8 w4 B4 Y 在virtualbox的镜像中,包含了一个or1ksim的程序,这个程序是对or1200体系架构的软件模拟,就好像ARM架构类似的也有一个在软件上模拟芯片行为的程序,具体叫什么我不记得了,呵呵。- i% P% j1 t2 \9 f4 ~7 L
0 e9 f, l' V& n$ T5 y$ L 也就是说,我们写的程序可以在这个or1ksim进行模拟,而or1ksim.cfg就是对or1ksim的配置文件,关于配置文件这里先不讲了,因为码字实在是很辛苦啊。感兴趣可以自行打开了修修改改的,对于上面我们写的程序来说,这个配置文件or1ksim.cfg我都改好了,直接用就行了。9 Z: p, e+ i( E2 n8 X
0 x" _! G6 P' ^9 z/ k( e5 } 4 K3 J, K1 @7 {" J
! V+ ~0 |5 c" Y: B0 { 老规矩,把windows下的共享文件夹mount上去
]. m9 X. A% [# v! y7 p3 |# | z3 w4 P4 P5 p2 Z! H
/ K& W& \; o6 ^( [2 V0 m. ]: E. r' L/ l/ b, N6 I! B+ u( U' Q0 O8 c
! @4 d* ~: {$ H& _ 然后,切换到我们的源码目录下,cd啊cd6 K. D- ^) q( r- b, Y7 \1 ?
6 }2 i1 b* z j
6 T5 l& m6 E2 }8 n. t P
' C; I4 M- h. Y6 L0 j: v4 t
+ }+ y: U% d; k% H$ { 再然后,make吧6 ?7 J9 b* X; \( w# @& o
) E* g( i1 N8 M
% q: n3 ~. l# D* M* ]' h8 y' h2 [' T
4 l4 j& D/ u+ M
信息太多了,这里我贴不完了,编译生成boot.or32就是可执行文件了
( ?0 \% L# x! Z( p% I+ b; `
* N9 N4 v" r( W" ?, {2 P+ y8 C
$ |$ O+ T' q& ]8 i2 W9 r# { 再然后,验证下我们写的代码是不是可以执行的,在or1ksim上验证吧,输入sim -for1ksim.cfg boot.or32,然后回车 l) C; X" U# o$ b3 o: U C
2 {/ p: O- c5 _6 c
, r. G" P, g1 B8 e M4 E4 v
3 T5 i/ E% S5 L . [4 a$ W7 s2 }6 M' G, `' y) E
! Y- x! s9 ?6 U! x 然后可以看到一堆信息出来了。
5 i. A _5 ?7 R7 [, z) G9 l" @) l! A4 n7 y& v9 T& [
其中包含我们在lds文件中定义的段信息
* w1 {# {, E% M) k1 `# S9 q
- `/ b( ]8 U9 z# s2 e7 e/ P
/ u. l8 I* Y8 b" t
4 C+ k8 E/ W% R. }0 g
2 G, B3 {& N7 t2 ~6 g" h
; r3 a! V* T O5 f* n( s 然后在弹出的xterm窗口,这个窗口就是模拟UART16550的串口输出的,并且在命令行中都可以看到我们的main函数执行的结果了。
2 S! c: |( ?1 `8 w1 ~0 X& l4 M, A0 x9 X5 m1 P- \( C1 B l
: a w/ M! S% t' m
, g0 d9 M3 G; M5 j4 P" c! u5 P
' Q. {( k3 u0 s9 O5 W7 }7 Z
$ Y! D9 p" \) k, g$ C/ t 但是这样验证还不是我们想要的结果咧,我们是要下载到我们之前做得SOC上才算成功的咧,好,现在至少已经说明我们的程序编码至少是可以运行的了,接下来就是下载到板子上来验证。8 d" r) G% v2 ?. c F% M6 Z9 j
, e# R9 |2 Y+ I, M 好,QuartusII软件打开,FPGA板子连接好,下载器连接好,把之前综合出来的or1200_basic_soc.sof文件download到板子上。. j% ~; p% ?' M( i3 [
) V2 u0 W" P {3 f
" p; V/ N/ {1 L
7 F9 B" T* c: D3 f8 H+ L : ^9 |, | n. D5 u2 f4 s
+ s. M% n I' w- M. C: {
然后在virtualbox的右下角中把下载器连接到虚拟机上去。
. k0 W3 g' x7 R( d+ B; I9 f$ B7 W
% E+ X9 H( {- S/ |, a9 e4 A4 q
0 }; Y! d$ U: t/ F; {! U7 p# @
8 ~. T) o* n0 I* `- V9 l( H) b+ H
0 \: m$ Z' z; n, _1 F8 _" W
接下来我们休息一下吧,上上网,去找找手头上FPGA芯片的BSD描述文件吧,顺便刷刷微博,看看新浪NBA什么的。好,我现在板子上的芯片是altera的EP2C20F484,要找的芯片的BSD文件就是EP2C20F484.BSD,google之,大喜,收之。* C9 B$ g2 _' A8 Y! i
) @6 D N% N+ E" P. C
好,我们来继续,把BSD文件扔到home目录下,怎么扔,自己想办法吧,BSD文件一定要对应自己板子芯片啊
" f% L/ j2 d7 h
2 e2 n) M8 C8 T. Z; r& s* x
% o, o: t+ `7 C/ R1 Q* D( x; q N# U& i% R; Q
& X4 E' l6 j, j3 P* d& L* d
6 o& Z0 B9 z: ^& F# y' k3 o 继续,打开一个terminal,之前在软件搭建已经把adv_debug_sys_latest.tar.gz包make install了,所以在terminal输入adv_jtag_bridge-h看到adv_jtag_bridge的帮助信息,
, }5 x7 x0 S7 y/ a2 w" {( L4 y
4 W- u4 ^% D% e5 a4 v' ]
9 d4 _. ?) \ S" o- \+ H6 W
" C6 ]2 M8 l) B% t
! I4 E; \; _/ w- y9 r7 \7 k 上面列出的就是现在adv_jtag_bridge支持的下载器,我使用的是usbblaster下载器,但是貌似经常提示找不到下载器,所以前面在搭建软件环境时把libusb-1.0.9.rar、libusb-compat-0.1.4.rar都make install上,可以用ft245驱动代替usbblaster,下载器还是那个下载器,至于用xilinx或者actel的朋友自行去看看adv_debug_sys_latest.tar.gz的帮助文档选择对应的下载器选项。) H t: }) t( e6 p
9 p* h7 [" D: z9 ^# z* d 好,继续,将下载器连上虚拟机后,adv_debug_sys_latest.tar.gz安装好后,soc下载到FPGA板子后,BSD文件放到HOME目录下后,再继续在命令行输入sudoadv_jtag_bridge -b ~/ ft245,提示输入密码时,输入openrisc,adv_jtag_bridge就会连接上下载器/ U5 b/ ~! D3 D: s% U: z
0 c# Y6 J6 q0 ~. Y$ B5 d: N
8 h0 i/ H( C2 E3 C1 V; O$ u' k: u/ d- r
! n9 H( d5 ~, }: R7 u$ ^5 d 这说明顺利通过下载器连接上or1200的调试接口了,我们可以通过这个JTAG来下载程序了# i* l3 r+ b! b' j3 M( ^ I
. E3 z ^7 d# s7 ~' B) W* W; H' N8 e- r
再打开一个terminal,cd进源码的目录,在源码目录下输入or32-linux-gdb
. i% |) m4 N! _; e/ V
% m: v8 A# O- E" ~2 v& g
9 J; M3 B' h. {: g
2 T! p, r# k$ X* Y" ^1 I k) \& D, I! {* l- Y
; n$ c& } A4 N: E2 k
然后输入file boot.or32,读取boot.or32文件信息3 J& c, F ~0 h2 g ] e
! X! v' `3 R; O- [ l
% ~& F; t2 l3 |1 I
* {1 B8 V$ p3 P$ R
2 q: }' r8 f: a) I- Z 继续输入target remote:9999/ k" q) Q) V) w0 w6 G
4 i$ ~: y# n: e" V
h$ N- P% ]7 R `4 t2 P$ h% l9 V( T" s/ c
; K% P2 o: @$ I: Z! j! e9 y5 u
这时说明已经通过gdb服务远程登录到开发板上面了。
) y! `, Z! s3 i1 j5 w
: ?' i5 y4 [9 H/ s7 }+ Z, s) |% Q! }" _' i( m0 ^3 K$ E
继续输入load,将可执行程序文件boot.or32下载到开发板的SDRAM上
7 T0 H6 [% \; ~3 c" z
+ q. a5 w: b1 X/ g4 S5 N& t4 V6 N
7 V+ j: o, b2 Y: H
% O4 p7 {4 L6 e
& [1 v9 a1 E$ ~9 Q# R( _ 同样这里也出现我们在lds文件中描述的段信息
7 i0 j0 i U5 ^' s6 v) @1 ]; z" q% C9 ^1 M
3 \+ k/ O" X" h9 H3 j
好,继续,之前我们讲过reset向量是从0x100地址执行的,所以要把CPU的NPC寄存器设置为0x100,这样CPU才会从0x100开始取出第一条指令执行。所以,输入set $pc=0x100
1 q3 U( Y, N/ ?! I. j
$ L, z9 q1 Z4 _1 K: @# a
# h) N. t6 J8 U v# d# ^3 N a
/ ?- l2 _: `6 Z/ m8 E/ H: q
' {6 ^3 q+ e" f. C+ d 好,到这里设置完毕啦,在现在可以打开自己熟悉的串口工具了,minicom、c-kermit、putty、ScureCRT,我用在是ScureCRT,windows版本的,打开设置好波特率,在写源码board.h中关于串口的定义是$ y" a$ Y4 Z8 e
, x" k/ n; f3 R" ?
* {: m! U5 L+ E% u8 f+ x g
! z% \. r! P% b8 C- ?! i0 t
% p. f5 T$ |/ I; H) n# ]1 a 波特率为38400,也可以修改成自己想用的波特率,由于我的板子的速度问题,38400是比较适中的,因为在后面板子上了linux后,lrz和lsz在38400的波特率可以和虚拟机无错误传输。' I- ~5 c( E" C2 p! B9 ~
* `# K3 a1 Z6 p9 x8 U4 v( x
% q$ W) A% G& i8 B
ScureCRT中设置好波特率,打开,然后回到虚拟机的terminal中,输入c+ ^9 V0 N9 [" r8 T6 y- K3 s
* a8 w2 A+ H5 `5 \/ Z$ \
5 ]* {) j. {' D# b- L/ O- _! s7 F6 A1 f v8 M
4 [. V4 i5 y& g0 ?- u
然后准备切换到ScureCRT中,好紧张,有没有信息呢,来了。
% G! N, A- I7 ?, L( _* Y
1 A: B1 o3 S+ H5 ?" v
/ i: {1 e' [- ^& L0 H
( y) z+ E) B7 h6 Q! E9 Y
, |" e" p& u+ ~! k0 W/ V 哎呀,有了,妥妥的,好了,第一个程序就到此为止了。/ ^7 L0 C3 q6 \$ Z4 [
+ z( O* Q% c4 B4 e+ O 接下去我们做些什么好呢,对了,还有关于or1200的定时器timer和中断的程序没写呢,这些留给朋友们去练习了,对于练习,可以到opencores社区上把
5 ^- P" X0 z& r; w% H& K
1 X( k$ ?' S) V! q5 M minsoc_latest.tar.gz
, l" |# X' G% |. V, n" I& x+ Q( q7 B$ e! ]* G# n$ |( i1 B2 J
or1k_soc_on_altera_embedded_dev_kit_latest.tar
+ O( ~) p' n. W8 U' @8 k
+ `. Z/ K2 Q! P7 [ orpsoc-master.tar.gz: w5 ]% D# b6 G; ?4 L/ P
8 ~ X9 | O7 E1 I3 b
这三个工程下载下来,这三个工程都是关于or1200的SOC的参考设计,里面也有相应的参考程序,有时间我会把这三个工程都上传,至于“裸机程序”的练习也可以加深对or1200的理解。# [5 G6 i, X5 x" _3 p
( Q" L& l+ v# P+ e) x1 ] 同样,在虚拟机home目录下的soc-design中有orpsoc-v2的参考设计,里面包含一大堆的“裸机程序”源码,我在学习时也是通过这个工程的。
0 o! S1 Z* a: E4 M/ T( V: l! J/ o$ P' \5 N7 l% ~$ e
下次我们来完善我们的or1200_basic_soc,完善之后我们在此基础上移植u-boot,移植u-boot我们再在上面移植linux系统。% w" h# s/ g5 i# X3 i
|
|