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

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

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
引言
3 g" N3 z  a0 V4 M4 M4 J* x“书上学来终觉浅,绝知此事要躬行”,“百闻不如一练”。
5 i0 K0 f- W" a5 ?1 C9 f/ I) G: O7 I& A: K
无论是研究什么东西,学习和观摩是一回事,动手操作又是另外一回事。玩OpenRISC也是这样,只分析RTL,做一下仿真,对其感觉只能停留在‘纸上’,要想进一步加深对OpenRISC的理解,加深对CPU设计技术的掌握。除了分析RTL和仿真之外,还需要做很多基于OpenRISC的实验或者实际的项目才行。6 q+ O0 p& y0 a, {4 P

2 F3 F0 ?" K1 r% J* H要做实验就需要对应的开发板,目前国内的FPGA开发板种类很多,但没有一款是专门针对OpenRISC的,要想用目前市场上的开发板,主要面临两个问题,首先,大多数普通大众的开发板大多逻辑资源不足,无法运行ORPSoC;另外一 个问题是,即使有高端的FPGA开发板,资源也够用,一般价格昂贵,此外还需要大量的RTL移植工作,bootloader移植工作和linux移植工作。这些移植工作需要的知识面很广,并且非常耗时。
. ~7 V4 R/ |' w% s1 r( W/ S2 N. W& Y+ O
我从2012年下半年开始接触OpenRISC,并购买了官方的ORDB2A开发板,价格适中,资源丰富,而且免去了大量的移植工作。) l9 W8 x% G# N$ @" Q
% q$ j9 _& U* d$ U' x
后来,随着研究的深入,越来越多的人参与进来,大家一起讨论问题,解决bug。其中深深体会到,很多问题重复的问题出现,此外还有很多问题根本不知道怎么描述,其中一个很重要的原因是大家没有一致的开发板,于是我建议大家购买官方的开发板,但是很快发现,官方的板子“Out-Of-Stock”了,没货了!
; H% }+ L2 d0 S& v  z8 v8 l
, K7 l! F! P% s0 q; ~; k! Y" c怎么办?当时有很多人“怂恿”我,让我仿照官方的板子,做一块一模一样的!!!9 Z  }4 Y2 a4 Q* z3 m

; h6 w8 q( w3 \% J我当时考虑到这个板子既能用来学习嵌入式,又能学习FPGA和RTL,还能了解CPU设计技术,一举三得,所以就毫不犹豫就答应了,于是,从那时起,我就陷入了“苦海”。
3 \! X8 @2 ~7 p3 r9 ?" s5 ?: Q6 A! y7 P
从2013年9月初,开始画原理图,到现在(2014年1月5日)可以在板子上跑linux。前后四个多月的时间里,一波三折,五味杂陈。
# [" A5 g7 C% {& k. d* H1 ~+ z9 u
2 [' c% M' M9 ]8 v$ E7 G本小节就回顾一下这四个月里做OpenRISC开发板--O_board 的酸甜苦辣。" g1 P$ q" Q" h

5 Y7 Q/ {; ?8 ~1 W2 o6 W( W* `" m* b6 k# T3 J: }1 v) ]
1 g- N! T8 x+ O( Z9 x) q
1,O_board的logo1 k7 }7 h; H( r$ |2 S- a6 S
下面就是我用5分钟设计的logo。% l5 e/ v) e0 z  J5 n

/ @3 t; G, ?& L: o8 g: _% `- D9 g# D' y* s/ l$ p
& j1 m7 ]) Y% O" d
& T% M) R+ f. ^- {7 Z8 x1 s( S

6 Y% C/ x4 s  a+ T/ i2,原理图
- F- Y  f4 v+ }2 C  _" u; |. kO_board原理图,以opencores的ORDB2A的原理图为参考,重新用altium designer修正原图中的几个错误,并重画了一遍。8 r! I& H! K9 U6 Q3 D, ?
. e! d' @0 ^# C  ?, G
原理图,我已传到了QQ群的共享文件里(群号:277505520),有需要可加入此群之后下载。1 C! O/ [+ f& q4 h4 O6 O! A
% w- |/ k9 r7 N, J1 W* }3 U. L
3,布局布线4 Z$ }- B. Y* R3 ^" [- P
如果说原理图是参考ORDB2A的话,那PCB的布局和布线就完全是原创了。O_board为了降低制版费用,决定采用4层板布线,要知道FBGA封装的FPGA芯片的256个引脚通过4层板全部扇出,对我这种菜鸟来说,确实有很大挑战。: h  ^. ^3 U/ r# T  B
, S& A2 ]. M$ v% L- x5 B
下面是用altium designer完成P&R之后的样子。
6 ^  Z) G/ m6 U! ?/ K6 T6 [
: K, G2 {" r2 C& M2 ]' w4 r! Y
' v8 b5 H( J" E- e, u
% y4 J  |- o# a7 k: ?+ v" d; g0 H3 ~! M: c0 d; v5 A3 {
8 w4 o  v' p" w$ W
7 w1 K9 Q4 s$ z: ?% \6 u
, C' @8 f: x. q) c
4,制版; k. v$ p. G! t
在布完线之后,检查一遍又一遍。然后就是找制版厂拿去制版了,由于比较关心制版质量,再加上制版工艺要求较高,所以我并没有找深圳那边的厂子,而是找了长沙的一个制版厂,并且采用沉金工艺。. T! W! F; `* E" _. @; ^

* h# ~* ]) E' b5 C6 f* x% f把PCB文件扔出去之后,经过一周的等待,2013年12月10日,终于制版回来了。
" @. p/ O+ d) L- s4 U  Q) f# l) \2 {* j2 K
2 q$ D5 }0 T: ?

% G4 X+ P* B) x+ K* x
" M3 B+ n% S, C/ R( L9 X
, ^& Y: w* r  y$ m& @5,采购物料
  G2 u* s5 c* U; v3 L; t板子回来之后,下一步就是根据BOM,采购物料了。麻雀虽小五脏俱全。板子不大,但是芯片,电容,电阻,晶振,各种接插件,一样也不少。
" L( G" I! S; X2 H) I2 }3 U
4 S& Y0 r2 _0 {! N5 x由于官网的板子是欧洲生产的,所以O_board的很多物料,在国内都很难买到。
- P1 z! h* z- x5 m# D- b5 c
2 T% b& P) @: w; V  d8 L在我跑过无数次中发,搜遍淘宝之后,总算把所有的物料的买全了。由于买的量太少,我本人之前也从来没干过采购的活儿,为了买到原装正品的芯片和接插件,买了退,退了买,折腾了近半个月之后,总算搞定了。; g. K8 B; u4 t# o4 `; S+ o
1 |. V0 ]7 s0 m' ^6 h; ?

/ T% t/ ?  P$ F  {3 m* p' w3 p  f  B' M' K6 c( N
6,焊接
- d$ |+ Y/ K  [, H% U, ]5 x, y# ?6 M制版也好了,物料也全了。下一步就是焊接了。
3 e* j) g; X0 p: s- X& e& a7 B, t2 H* \0 [( C$ \
我是做软件出道的,半路转的硬件。虽说是硬件,但主要还是RTL,真正和PCB级别的打交道还是很少的。焊工就不用提了,那叫一个差啊。1 D4 q- S5 r- e7 M8 G

8 l6 B7 T" [1 F: k/ ?; \% w于是我整理好物料,光板,焊接说明书之后,交给了北京的一家专业焊接厂。
  L: w: j: m/ C" j, b: K) j/ p
# e8 N1 e9 y% ^" ~三天之后,板子焊完回来了。
! A- e5 c' Z9 |# Z$ X8 O! q) b. s) b! b  z3 w! L+ Z  I+ O& V
% P- T* N5 q) N
5 }. n0 t- h) A* o

( u& k  i' b# P
" l' l6 l0 l8 z  o6 Z) c6 g# O' |( c' J0 n# b

. H0 N0 F% u6 Q: t7,硬件调试
; \  ]: P; }8 F! M2 J6 Q3 M焊接完之后,我刚拿到板子,就发现有好几个地方焊的都不对,有的电阻不让焊,结果给焊上了;有的电阻漏焊了;有的芯片引脚焊错了;有的芯片引脚焊锡太多造成短路了。3 k. o) N3 q/ H% g* F
1 [+ O" q6 D% v  ?$ d* v
总之,上电之后,电源灯根本不亮。& W' E- A( ]# ?. A

- ~$ k6 I; K5 P5 Y后来检查发现是电源芯片的几个引脚给焊短路了,有另外一个电源芯片的引脚虚焊了。
2 c: O2 g  j, F$ U
9 [% g: U( |% V% t7 O6 ^2 E修改之后,发现板子发热很厉害,不到一分钟时间,板子就特别烫手,5V输入也被拉低到了4.6V。5 D, x- F; L9 Y& W  n9 ?- {  J
+ M+ Z3 u! X2 O5 N
gdb可以下载程序,但不能读写SDRAM。。。。。。。。1 Z5 L* t. A, O6 s; A7 x/ H
3 i8 Z% c. q- F: X" Q* K
调试or_debug_proxy。。。。。。9 ?' q5 G' I( x) a  Z; V

# e$ d! M- o# }9 I" b调试adv_jtag_bridge。。。。。。# e1 C; S% C2 Y% P; G
! {/ A4 h6 l4 D9 }9 Z6 n
后来检查发现是晶振的引脚给焊错了。
6 S+ q& x. U6 h" F1 M5 ]
/ ~3 ~8 n% P5 a$ ?. ?0 Y。。。。。。
8 K+ {5 X  e8 ?8 f9 R: y& C# {+ U
经过四五次修改,供电部分和晶振总算正常了。* \2 G' E2 x# R6 O5 G5 [9 C
  K, z4 J& {1 O: J* \5 |& U
下面是我晚上熬夜调试的情景。3 V8 r8 ]: u' S4 C( Q# a
* x: T7 q; Q3 ~* J
需要说明的是,白天还要正常工作哦,毕竟公司给安排的工作是第一位的。+ m5 |3 s2 u# _( y

  F6 v( z  `) {& F! I
# P  z% K$ N, M5 @3 C
: g! O8 ?. F8 G
3 T# C3 e6 j4 ^6 y  m; i4 ], I- C4 }# f) d' J

# n" r3 n1 D/ R1 p- C2 F- e8 c! S

! K( P/ _+ F- h: i8 R& O  v; ^& |7 i, [0 J- _$ w
8,RTL的调试
; @  s% p1 b( E" n由于主芯片EP4CE22F17C6N,在国内一直买不到原装正品,所以就采用了功能,逻辑资源,封装完全一致,但速度略低的EP4CE22F17C8N。0 |: \8 m7 }2 F! X% Z
" W" z8 z4 o& N8 k
将ORPSoC中的PLL的频率降低之后(从50M降到20M),发现时序分析时出现错误,修改SDC文件,OK。( o' ?9 A; w& e0 ~

/ v+ d' b3 m6 q: P0 j7 J
9 _" J, G; {2 \# F# c: p
9 `, E6 |& @* _" T- N/ Q9,软件的调试
; y* G- s, b1 W( }这里主要包括orpmon和linux。
' g4 b' t' H& o' E% W7 a' m9 e. U) F4 d! b2 H, A8 g, r+ e$ c* H
同样是修改频率,之前移植到ML501时有过介绍,这里不再赘述。5 R; ?' L8 G1 W  d

* f/ P9 R% J% U8 T9 n, p9 g7 D! S1 x0 m8 |9 _
( l; L; n& d$ A& f3 v. l6 R# D+ \  n
10,验证
4 I  B% d: G) x# I8 D, m4 }经过千难万险,总算可以跑软件了。; f6 B+ c! ~( O, |3 W( X

8 q3 j' D  o& ~7 g! x  y; ?8 ^' N具体的操作步骤,之前已经介绍过了,如有疑问,请参考。$ D" P& I# b5 a- W' F

% G+ s! H  G: @" n8 HO_board 跑orpmon:9 R6 z; ~6 E! e8 j# i; d+ v

: B* B4 w! T& g1 ]0 n; f
  M& w3 ~7 W) s6 j" j) w; o: Q
( c7 q2 {$ P' b5 T& m0 c* a
, r0 C+ q- U" t- ]$ O  H  VO_board跑linux:
% L; P) D( d4 f" {5 y% R: D8 c8 n& B# r" x$ a+ n  V& t
" l( p, x  r' `) R$ X' B$ v
9 N7 C% R2 h' M  k
- J1 |8 C1 l8 L1 \
O_board起来linux之后,挂在PC机上的NFS,并运行“hello O_board”程序:7 H+ g, u+ t8 H3 J  D* N
3 T. R7 O1 _3 g5 X0 O* E
7 X$ [3 O9 a& b3 G5 M# ~

$ `- [( E4 k' C. f- Y3 N& I
# B+ R/ B( ~5 o注意:出现Segmentation fault是因为我用or32-elf-gcc编译的,改用or32-linux-gcc之后,OK。
0 d6 b8 l* Z) {
7 l: ^: M* \- g: m+ `0 m/ b/ ]- c  g* u9 E

' L' c, X6 d. ~( k1 T通过上面的测试,说明O_board的JTAG,串口,ORPSoC,SDRAM,ETH等模块完全工作正常!
3 F9 u. ~' q6 R1 M  K& S5 g! X8 Y! _& C1 s/ q- {' ^# @
; o* q9 g' U$ I( Y) t: Z3 F4 C1 w
11,上市. x" f! f* z, J% m" @. A
原理图经过6次改版,PCB经过3次改版,制版厂经过两次改版,现在板子的所有功能都没有问题了。) A, u+ V$ I; l2 K6 \3 f! b- C

, F/ c/ F  c+ \8 G/ v9 Z# ?6 A板子调试成功之后,就有好多人跟我说想要,在我免费送出去两块光板之后,发现这样下去不行,光快递费我都付不起。
4 ^) q2 h+ h. O+ S7 a! ~0 _, b4 [: z
' F6 P* L1 @1 W9 t
需要注意的是,除了板子之外,还会提供全套的学习资料,包括已经搭建好的开发环境,还有很多实验例子。' R$ T- u( }! W2 D$ Q

# ?* }! ^, P" P+ O: T  J/ Y
% j; a+ d9 L4 l) k: M2 U5 x* D- R% O- m" x3 a$ M
- Q5 u" N1 B0 ^) h; X

% D8 ^8 V% b% b4 d% u) Z
7 d% N+ V, M! M: }# @0 |3 d
  O5 u' Z4 Z! h7 f0 P, f附录:O_board feather3 O) D% H, y9 Y3 x& o2 [
适用对象:3 J0 q( [) s9 g! s
1,嵌入式爱好者
' _+ j( o$ K7 @9 Y1 I用处:学习U-boot,linux开发,驱动开发。) S4 y* b: |- O5 \3 n' N
2,FPGA爱好者" n( \6 v4 }3 \" {- ]
用处:可以熟悉quartusII软件操作,SoC设计,verilog HDL练习。
7 I8 q6 j7 M7 \8 k- ]5 X3,开源CPU爱好者: g9 u/ v& j' a  C
用处:修改CPU内部模块,如流水线,cache,MMU等。
. V5 U) |* o# q8 I9 O$ M) q% ~1 X
7 e) T4 e4 ?# U2 c" h: `如果是学生,可以用来做毕业设计。
* V" p0 [8 Z9 x如果是工程师,可以锻炼技术能力。& z. }/ m/ V) W1 `# M, G2 E

0 O$ W2 }8 m1 Y板子参数:  m3 r: Z9 o2 l5 y  c. Y4 V
-ALTERA Cyclone IV E, 22K LUT (EP4CE22F17), ~5 w% S2 }$ B
-SDRAM 32 Mbyte
& s9 P0 [4 n0 m8 ]-SPI FLASH, 1 Mbyte
4 z; s# M  g) Z) t9 o-SDIO micro connector
2 R! g  m8 O, P6 M-Fast Ethernet
7 Y* m$ Y9 u2 G4 D-USB "on-the-go" HOST/SLAVE
! }  ~! S6 ]. c5 C- P( Q-USB power, configuration, UARTs
' K6 |, ~4 `% o; t7 O-Expansion connectors $ a5 S7 \3 c6 M
-Supply via USB" t6 c) k/ j7 ~/ C9 x

6 h  B$ B6 q' w6 h0 [% }) s% A; f1 y5 K* U
小结' ~2 s: H1 w: {3 @$ V
这次可真是体验了一下从画原理图,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-24 20:46 , Processed in 0.187500 second(s), 27 queries , Gzip On.

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

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

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