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

#技术风云榜#OpenRISC开发板O_board的设计,实现,调试与验证

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2020-11-16 14:50 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

EDA365欢迎您登录!

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

x
引言% h( r# w/ b  G$ A7 d: O: q- @
“书上学来终觉浅,绝知此事要躬行”,“百闻不如一练”。
  U, h$ _/ w( Z/ \8 u' @8 Y% ^# c) J2 U1 S% {( k/ J
无论是研究什么东西,学习和观摩是一回事,动手操作又是另外一回事。玩OpenRISC也是这样,只分析RTL,做一下仿真,对其感觉只能停留在‘纸上’,要想进一步加深对OpenRISC的理解,加深对CPU设计技术的掌握。除了分析RTL和仿真之外,还需要做很多基于OpenRISC的实验或者实际的项目才行。
+ d0 Y: O6 n  j6 }( Y; o( n( t
4 {6 E1 L- v! k0 A5 e要做实验就需要对应的开发板,目前国内的FPGA开发板种类很多,但没有一款是专门针对OpenRISC的,要想用目前市场上的开发板,主要面临两个问题,首先,大多数普通大众的开发板大多逻辑资源不足,无法运行ORPSoC;另外一 个问题是,即使有高端的FPGA开发板,资源也够用,一般价格昂贵,此外还需要大量的RTL移植工作,bootloader移植工作和linux移植工作。这些移植工作需要的知识面很广,并且非常耗时。
- D+ e) t# L5 {6 T
, Z4 L; Q. [0 ?( c1 O7 l, n+ \我从2012年下半年开始接触OpenRISC,并购买了官方的ORDB2A开发板,价格适中,资源丰富,而且免去了大量的移植工作。
8 d0 v% v5 \: L2 H3 {
3 n) V" r8 }3 T5 ^  i后来,随着研究的深入,越来越多的人参与进来,大家一起讨论问题,解决bug。其中深深体会到,很多问题重复的问题出现,此外还有很多问题根本不知道怎么描述,其中一个很重要的原因是大家没有一致的开发板,于是我建议大家购买官方的开发板,但是很快发现,官方的板子“Out-Of-Stock”了,没货了!
" c" ]* Z$ m" J4 y1 J
9 L/ j4 f1 ^. H5 H: s" r怎么办?当时有很多人“怂恿”我,让我仿照官方的板子,做一块一模一样的!!!" ]0 e$ h. m. _# ?" P

. T) i" Z; n* H# D) c( k我当时考虑到这个板子既能用来学习嵌入式,又能学习FPGA和RTL,还能了解CPU设计技术,一举三得,所以就毫不犹豫就答应了,于是,从那时起,我就陷入了“苦海”。
* Y& ]' s' t/ X6 T& q4 Y7 g
* |6 O1 r' c9 n3 ~. D! d从2013年9月初,开始画原理图,到现在(2014年1月5日)可以在板子上跑linux。前后四个多月的时间里,一波三折,五味杂陈。2 j* m- Q: X) h, c4 o2 L9 M  ]
. Y7 }7 ?1 N2 G4 R% A% C% l
本小节就回顾一下这四个月里做OpenRISC开发板--O_board 的酸甜苦辣。, x( u$ a' T  u: Y# s
7 \* F+ j" C8 {. l
  ]& G( x+ F. a

: _: u4 p1 y5 q5 U1,O_board的logo
6 Z) [* K- @$ P1 w7 v4 ^下面就是我用5分钟设计的logo。* K9 G( K( p6 |( J9 j. @

; t  {! [9 s* v
0 V: c# k0 `5 |' z0 g9 z* m! r2 t$ W; ], i9 C, T5 N) Z

$ }/ c. U+ T+ e
. s  [- z$ j2 t; E+ l. r9 J/ J2,原理图
% J- i( x. B# @2 R; I8 |; HO_board原理图,以opencores的ORDB2A的原理图为参考,重新用altium designer修正原图中的几个错误,并重画了一遍。( G8 `, _% s' T. O
/ n0 a0 w) y, |4 S5 a
原理图,我已传到了QQ群的共享文件里(群号:277505520),有需要可加入此群之后下载。
8 r+ M' y! ?- L* X9 `, Q) Z
4 }* S' g0 N* h' v5 V. O8 d* K) k3,布局布线
3 \$ ]3 k! ]2 g5 H如果说原理图是参考ORDB2A的话,那PCB的布局和布线就完全是原创了。O_board为了降低制版费用,决定采用4层板布线,要知道FBGA封装的FPGA芯片的256个引脚通过4层板全部扇出,对我这种菜鸟来说,确实有很大挑战。; d# e; U- k; C' J. }

: u; M4 f$ i2 Y下面是用altium designer完成P&R之后的样子。+ v: ^" p2 [+ [" G) B; [) L

# r6 F9 A3 @  y( W' i/ a ! d" n' ^0 E3 p
1 }/ O4 E+ ]4 |
) K' V8 P. H% Q  k: t% S
! `" y5 [' h( i" u0 F5 q
. {3 P) z- E: B0 q  E& ^; w/ r

" ~5 ^- Y  @" x: ^4,制版( B5 G4 m& [8 D9 C$ x
在布完线之后,检查一遍又一遍。然后就是找制版厂拿去制版了,由于比较关心制版质量,再加上制版工艺要求较高,所以我并没有找深圳那边的厂子,而是找了长沙的一个制版厂,并且采用沉金工艺。; p4 @3 ]$ j- Y3 {5 j8 H
3 J" U/ R4 g8 `! t. a
把PCB文件扔出去之后,经过一周的等待,2013年12月10日,终于制版回来了。
) W  O( S7 T7 u" c" I
% ?) e$ b/ t  b6 R* i3 B ; Y- o9 Z9 n# S" F: v
6 S, [* z* `# f: d& q1 ]

* [* H- {. U' S3 h7 C3 O# s  ^1 |
# ~0 S1 A" C5 z1 i( J5,采购物料. D# a& {8 G% L$ F; R
板子回来之后,下一步就是根据BOM,采购物料了。麻雀虽小五脏俱全。板子不大,但是芯片,电容,电阻,晶振,各种接插件,一样也不少。
/ C0 K  `3 c+ J  v+ J1 z0 E- o+ R$ D/ R8 O5 f9 p7 }  ~- C
由于官网的板子是欧洲生产的,所以O_board的很多物料,在国内都很难买到。" _$ Q1 l) B9 U3 @5 {1 S7 u

: z: N+ b2 A6 i1 r+ X& }在我跑过无数次中发,搜遍淘宝之后,总算把所有的物料的买全了。由于买的量太少,我本人之前也从来没干过采购的活儿,为了买到原装正品的芯片和接插件,买了退,退了买,折腾了近半个月之后,总算搞定了。
4 b% p  ]) d2 D" c
- d, m1 ?1 G0 N* @# l3 D) |& Z1 y# L
# I8 x6 z) f+ A7 o) t/ |. g
2 g0 M9 r% t; T: \' R6,焊接$ y2 u' ]! P( _# x+ Q
制版也好了,物料也全了。下一步就是焊接了。
/ x; R+ O* O% |7 u
$ c" Q3 b2 b6 h& Z2 H. c: \0 [我是做软件出道的,半路转的硬件。虽说是硬件,但主要还是RTL,真正和PCB级别的打交道还是很少的。焊工就不用提了,那叫一个差啊。
. ^1 V( z7 Y0 F3 ]: T9 v0 s' f/ g5 N) Q& I" M7 M4 N- ?
于是我整理好物料,光板,焊接说明书之后,交给了北京的一家专业焊接厂。
8 O9 y6 w$ c; s; x' V
) X5 p, b* q4 G/ i三天之后,板子焊完回来了。: h+ j! P* l8 \

, i( D6 p4 V8 N7 G/ { % y2 E9 @( }. D# H7 b
; h3 A6 h* \5 k: w1 L/ S2 c2 Z
: C" L8 q# e( }  i5 l
3 [; O: i$ P; }( k% d; r
3 f9 W# @( Z. T3 z+ I+ q
/ K: M; d/ d/ _' a7 |5 V
7,硬件调试" W" o: c. S0 d5 m9 ^1 }
焊接完之后,我刚拿到板子,就发现有好几个地方焊的都不对,有的电阻不让焊,结果给焊上了;有的电阻漏焊了;有的芯片引脚焊错了;有的芯片引脚焊锡太多造成短路了。- {' z8 H( j1 v  F
4 r  D) I* t0 L& x
总之,上电之后,电源灯根本不亮。# q' B! w% I9 }) v+ p9 J" ^
* M1 d; q( }* h  t2 h/ c7 U$ |6 w! T
后来检查发现是电源芯片的几个引脚给焊短路了,有另外一个电源芯片的引脚虚焊了。
$ P- [4 Y8 V2 r+ `5 a  G
; V( x+ R5 Q: q, M' I修改之后,发现板子发热很厉害,不到一分钟时间,板子就特别烫手,5V输入也被拉低到了4.6V。" \# {# x! o0 U7 d* z1 M7 r

9 G. d' f! d9 X  l% x! b) H. G( [; K* Ugdb可以下载程序,但不能读写SDRAM。。。。。。。。
( O' M6 `4 h2 E' v- y
( G  t1 Y# ~+ K% V8 s调试or_debug_proxy。。。。。。! y0 p$ g, b% L

* }- B( A& A0 r) j- j调试adv_jtag_bridge。。。。。。
9 G! P/ J, L! R6 K# J( Y8 `
8 \! {; q; i+ s! d; K8 W后来检查发现是晶振的引脚给焊错了。
( I2 i% b, \. i  O: G# t! j$ ^/ C' T' L8 ?& Q' a
。。。。。。
/ b0 L, ~8 H% H  E, Y
% s1 f# @7 b3 s, M$ R# z经过四五次修改,供电部分和晶振总算正常了。
2 }5 u& R4 c9 G. y8 C( b
; V; y  b5 n3 o* q' l6 k下面是我晚上熬夜调试的情景。
7 L2 U% M" E% }  S! @
0 j) h, Z! d$ v需要说明的是,白天还要正常工作哦,毕竟公司给安排的工作是第一位的。
9 N* u6 F* Z; T
1 o+ k" s5 u+ S" {8 C& v6 e; g
2 y8 E/ L* r, X( z
. G/ K, ^: V0 `: a2 _ 9 _/ X# ~! b0 x) I
# F" g3 Y1 F3 W" ^9 l
6 W1 g+ l, h$ _# d9 c1 k/ i
7 a  M3 ^' m) k: P( `3 ?

' F" e+ [" z* L+ o. c2 i0 G7 |, A" ~" l) A* o) y* c
8,RTL的调试! e, }0 n+ ^) J, a1 G
由于主芯片EP4CE22F17C6N,在国内一直买不到原装正品,所以就采用了功能,逻辑资源,封装完全一致,但速度略低的EP4CE22F17C8N。
+ N1 ~; S+ ?1 k( C4 O  |/ s6 q( d; r, v/ ]1 f& I) |# H
将ORPSoC中的PLL的频率降低之后(从50M降到20M),发现时序分析时出现错误,修改SDC文件,OK。* ?/ I3 T* L* m. Y7 u4 z% R
5 N0 `- v  [" }( E

* D! r4 \  Q  X& ?! n
8 g- d) b, I1 N5 m# |# n6 [3 ]9,软件的调试
9 o+ Z: _' q# s* y2 i. n这里主要包括orpmon和linux。
6 m  w$ x* x7 t8 u' n9 F( P% v' K' C- h$ }
同样是修改频率,之前移植到ML501时有过介绍,这里不再赘述。" t3 W1 @+ D" I9 q/ X0 e
& {, |" C" |; q# j$ S% t3 _+ H! B

& }- y9 X' r4 \+ K5 T. A" u0 H, D5 b; E9 W
10,验证9 S1 E, K  k3 D$ i* X) P
经过千难万险,总算可以跑软件了。
0 T4 V* P' V: ?" V3 }0 n
! }! p9 g  v5 Z/ j+ y具体的操作步骤,之前已经介绍过了,如有疑问,请参考。
3 M& R* z" c; Z% m/ ~7 Q
! X8 c5 [: x- y; y+ v8 @O_board 跑orpmon:: t* j9 _* T$ F$ m- Y! v2 e

  B! S& L9 E& Z- U# X, P' p* {
: S8 f( ?) T# _' Y" a9 ~, u0 h" w5 Z
2 p8 G% O( c0 f. Q9 P3 e9 u, k4 `) i
O_board跑linux:
: Z' {5 g: k/ k6 V2 ~' o
, i* v! U2 \/ }- u2 {" O 7 S  s2 L3 R4 [; m& s# k1 o+ k
* N0 G& H5 ]' d5 t/ X" o

( n$ m3 x7 n+ L  d( ]& aO_board起来linux之后,挂在PC机上的NFS,并运行“hello O_board”程序:
8 H( B7 k; [8 [
9 R+ |6 v# C+ L7 W6 r6 I $ J: _: b8 [) K3 l

; v! p# X. `; R+ g4 o( t6 f5 W0 q, Y% S/ Z9 e4 q% N
注意:出现Segmentation fault是因为我用or32-elf-gcc编译的,改用or32-linux-gcc之后,OK。3 ?* E5 W! u) }$ E) ^! E( k- P

- b# v: V8 ]2 F9 U# Q" [/ r; e2 G) V4 c1 F3 v- L/ T6 G

. T) |+ r. c3 }9 S. t通过上面的测试,说明O_board的JTAG,串口,ORPSoC,SDRAM,ETH等模块完全工作正常!
1 C0 z  R3 y! [3 Q5 A0 v# J
7 ~2 t' x9 |* n* g
: i, e- m- z; V* h7 K2 A% ?; D8 e. E11,上市3 q* {  ~5 `$ }6 d7 [* d& f1 ]
原理图经过6次改版,PCB经过3次改版,制版厂经过两次改版,现在板子的所有功能都没有问题了。2 r. a# z2 u- _4 a2 R3 E+ u5 D* P/ \
: x, P9 Z- n8 F: A
板子调试成功之后,就有好多人跟我说想要,在我免费送出去两块光板之后,发现这样下去不行,光快递费我都付不起。
7 G3 ^6 P' ]( r+ f& d) e9 B# t/ ~7 n. X3 l

, Y1 U; L1 b1 n9 D需要注意的是,除了板子之外,还会提供全套的学习资料,包括已经搭建好的开发环境,还有很多实验例子。
! J: |# N& Z" ^; s# n: A7 m* r# i. c; u) t" ?) v5 Z
0 B  o) S1 v7 X* U) ~8 M

% G9 ^: C* O4 r6 V5 W$ Z+ q/ \* L8 R) N  k& s
1 B; ~4 f. J' G& j- a7 G

( f* L, z9 \3 S& f: f% ?4 U) Q/ S' \1 f
附录:O_board feather
3 C& S6 E- A) K9 _, t  m适用对象:
1 R) p6 G6 q% H6 @. k8 @1,嵌入式爱好者, G0 N! R( d- K1 \/ ?' r
用处:学习U-boot,linux开发,驱动开发。
& d. c- f9 E; W+ K  ]; a2,FPGA爱好者
5 w* z3 r9 Y- U9 F# C用处:可以熟悉quartusII软件操作,SoC设计,verilog HDL练习。3 P2 Q! Z) b' b* H( p( w# L
3,开源CPU爱好者
  j' N' |: r; b( H% a: u. R用处:修改CPU内部模块,如流水线,cache,MMU等。: ?8 O0 x. u/ Q  ?5 ~3 ?( Z" D
: S' X$ m9 b$ o! }
如果是学生,可以用来做毕业设计。
" W  e) ^# _( d如果是工程师,可以锻炼技术能力。5 o/ a) f' o; a* p+ T$ o8 M

! k3 g9 f- l+ p1 y7 ]板子参数:: \9 ?5 R& X& Q' |3 F# M. C
-ALTERA Cyclone IV E, 22K LUT (EP4CE22F17)! Q  m2 C% {6 m8 T/ c2 G; E
-SDRAM 32 Mbyte
2 P. n* V2 \, e# {3 L-SPI FLASH, 1 Mbyte : x9 m" W8 j) B, |# \
-SDIO micro connector
" R8 k. n% P( \6 G-Fast Ethernet 5 [, ^! k, C3 h  p8 E$ E( m
-USB "on-the-go" HOST/SLAVE - [5 ]2 z4 [! y+ I! O5 o* ~! Q' O
-USB power, configuration, UARTs
) _: j: I0 m2 {9 t6 k-Expansion connectors   p* @# I1 M( R, O
-Supply via USB1 N$ F& i0 @, M. o, k3 j
( m7 \, n4 y6 q* \- [5 Q

; m2 b3 r: o- J# @小结
  A3 c2 E$ o& E/ R这次可真是体验了一下从画原理图,PCB的布局布线,再到制版,采购元器件,焊接,调试,FPGA开发,CPU设计,SoC开发,linux开发的全套流程啊,最后甚至还体会了一下销售+客服,感慨万千,收获颇多啊。
  • TA的每日心情

    2019-11-29 15:37
  • 签到天数: 1 天

    [LV.1]初来乍到

    2#
    发表于 2020-11-16 16:35 | 只看该作者
    OpenRISC开发板O_board的设计,实现,调试与验证
    您需要登录后才可以回帖 登录 | 注册

    本版积分规则

    关闭

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

    EDA365公众号

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

    GMT+8, 2025-11-25 01:20 , Processed in 0.171875 second(s), 26 queries , Gzip On.

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

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

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