OMAPL138端口复用设置问题 - OMAP-L138 - 嵌入式开发者社区 - 51ele.net
设为首页收藏本站

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 8095|回复: 9
打印 上一主题 下一主题

[已解决] OMAPL138端口复用设置问题

[复制链接]

15

主题

1357

帖子

4579

积分

创龙

Rank: 8Rank: 8

积分
4579
楼主
发表于 2017-4-21 13:59:36 | 显示全部楼层
unicorn06 发表于 2017-4-21 11:40
& I5 }$ m" j: @* j. g  J( l会不会你们的开发板和仿真器哪里不兼容?因为我感觉已经编写最简单的语句也不好使。 ...
& e0 T2 }0 }; [4 @/ ]
" p3 }+ a! S3 J- F# Q1 j

7 x* [* x; k# j+ \) w+ @& Q6 b: [0 hARM CPU 默认工作在用户权限无法改写 SYSCFG 寄存器的 需要切换到特权模式
/ j8 I* b. x7 X- H; o3 {5 _DSP CPU 不存在这个问题
6 @5 l# H- q. P8 d4 {

本帖子中包含更多资源

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

x
回复 支持 反对

使用道具 举报

15

主题

1357

帖子

4579

积分

创龙

Rank: 8Rank: 8

积分
4579
沙发
发表于 2017-4-21 14:50:51 | 显示全部楼层
unicorn06 发表于 2017-4-21 14:34
( T" N3 E) a+ m& M& N* I1 c! b,高手~~~
9 W1 @; N6 R& `7 Y% p, _- r" ~正想和你们说这个事呢,我还买了一块c6748的核心板,实在没办法了,我就把c6748核心 ...
2 C5 H  X4 ~' t8 {
在 ARM 端 StarterWare 例程中 CMD 文件比 DSP 端多了这样一句
# L& W2 o' d: z, d/* 重新配置程序入口点 */
" z  R' i( R2 [# u& j" D8 r7 ^-e Entry
  1. /****************************************************************************/0 L" x3 o2 p9 X$ p8 X6 Z
  2. /*                                                                          */" _* e1 a' V9 c8 _4 U6 c5 b2 s
  3. /*              OMAPL138 及 DSP C6748 内存空间分配定义                      */
    + t5 C( v9 a) i: F1 ~; W8 S  t
  4. /*                                                                          */
    7 ~* V1 o+ B# f( f
  5. /*              2015年04月20日                                              */
    . w' U7 [9 w+ C3 E5 I0 G& F' ~
  6. /*                                                                          */6 X1 \( w- }, c4 x( ^! U
  7. /****************************************************************************/
    ( {: z$ c& ], I
  8. /* 堆栈 */# l5 f+ ~9 S9 Q) a$ A
  9. -stack  0x8000
    9 q3 h/ _% Q& V. k& Q
  10. -heap   0x2000
    7 c  I6 z) C0 r/ Y, M5 c
  11. 8 X  x+ T/ b7 P) @( s2 G$ S5 B
  12. /* 重新配置程序入口点 */; K" }! U+ _* I3 ?
  13. -e Entry8 Y- _5 m) o) W) O6 W! [
  14. " m% o+ G& [5 L$ f) o
  15. MEMORY. K# y) ]* F, F5 U  H% F
  16. {" @1 w; V4 P3 `' u! I# y$ d
  17. #ifdef DSP_CORE
    % N7 t# U- @& K7 f
  18. /****************************************************************************/' C  S, M) B# B  K' ]
  19. /*                                                                          */. y' M4 d  }. A3 `, U& [+ }" P: h8 F
  20. /*              DSP 专有内存区域                                            */
    " S; ^" s: i7 ~' B% A% w
  21. /*                                                                          */
    0 }) L& E! P; H$ H' J$ a: ?3 N
  22. /****************************************************************************/
    8 y+ F( L$ S& d% x/ n9 u
  23.     DSPL2ROM     o = 0x00700000  l = 0x00100000  /* 1MB   L2 DSP 本地 ROM (DSP ROM Bootloader) */4 C" U3 o9 l8 s: p! q
  24.     DSPL2RAM     o = 0x00800000  l = 0x00040000  /* 256kB L2 DSP 本地 RAM */
    1 x6 C6 i, j# E1 C5 p( \5 N) @
  25.     DSPL1PRAM    o = 0x00E00000  l = 0x00008000  /* 32kB  L1 DSP 本地程序 RAM */
    2 r: e2 \: F% c' m/ |1 `
  26.     DSPL1DRAM    o = 0x00F00000  l = 0x00008000  /* 32kB  L1 DSP 本地数据 RAM */8 G1 ^7 V4 K7 ]# `
  27. #endif
复制代码
这是一段汇编代码用于切换到特权模式
3 s- `. D- A5 _. n/ D. t# H
: q  G4 \/ f. QOMAPL138_StarterWare_1_10_04_01\system_config\armv5\cgt\init.asm3 \. S/ U0 E4 u2 q& \
  1. ;******************************************************************************$ T  K5 }# f, z: j& e
  2. ;
    " K/ R; }- I4 x
  3. ; init.asm - Init code routines
    7 m$ a7 r( v' R% K
  4. ;8 E) I) v- ^* e6 E
  5. ; Copyright (C) 2010 Texas Instruments Incorporated - http://www.ti.com/* }2 ]5 |3 I) ~( r3 L' S/ `" j% B, q
  6. ; All rights reserved.# }. |! |: ^7 Y2 B5 R& s
  7. ;
    - n) n! \& H2 T5 S, S' Y/ X/ f) k
  8. ;******************************************************************************
    ) o. l- l: X: e* u6 I; m1 X
  9. ;****************************** Global Symbols*******************************
    - d- X4 k+ l6 q1 N& Q
  10.         .global Entry
    ( l+ K  j2 P; I5 n+ p" l  H
  11.         .global start_boot* E0 v% v  V5 Y. j+ a
  12.         .global __TI_auto_init1 X& n7 ~7 A5 \* V% I: v+ F
  13. ! M0 ^$ ]1 C. N* }
  14.         .ref __stack
    9 N5 e$ n! ~9 |' F! O# p4 E
  15.         .ref __STACK_END# i9 N# d# u6 h' ]( W' h% I
  16.         .ref bss_start1 j$ e3 r7 A4 ~3 i( g
  17.         .ref bss_end
    7 m  ?( V% k6 @9 |7 X) n* T! o
  18.         .ref start_boot( f8 w+ ~- s7 l9 t  ^
  19. 6 q% e- D: }8 A8 }' ?
  20. ;************************ Internal Definitions ******************************, g7 J+ h  r4 L6 l% W
  21. ;  n, z8 W1 w5 r& M. U0 M' K
  22. ; Define the stack sizes for different modes. The user/system mode will use
    0 |) A) b) F$ e3 M- G, a: i* _
  23. ; the rest of the total stack size
    ) }* ~4 e5 z* p9 F! B
  24. ;
    ! Y+ p4 _: {$ b& D

  25. + {! l- k/ @! M9 J: A
  26. UND_STACK_SIZE .set 0x8
    : o3 K7 j9 A- i% D; k7 ?
  27. ABT_STACK_SIZE .set 0x8
    ' q7 c- D+ S; f: I( c
  28. FIQ_STACK_SIZE .set 0x8: c% X9 m+ ]) [$ H. j% f
  29. IRQ_STACK_SIZE .set 0x500; n% O" u  w  v. ~1 N
  30. SVC_STACK_SIZE .set 0x8
    " c( V2 S/ Y% F: b8 |0 F0 ]
  31. ; R- D( A2 b' Q1 c8 G% h* Y% p5 O
  32. ;  d* O' F7 ^; [* v2 e
  33. ; to set the mode bits in CPSR for different modes! L# `- Y4 `$ f+ D
  34. ;
    ; F4 I+ P! @1 J5 S+ _1 w
  35. . M/ X0 {( E! s! a
  36. MODE_USR .set 0x10- E' h/ z" e, t
  37. MODE_FIQ .set 0x11* E4 }4 |' g* m0 X
  38. MODE_IRQ .set 0x12
    * _& r" \5 L9 Y$ q- q; @
  39. MODE_SVC .set 0x13+ V" Y/ d' q8 B8 ]. Y9 R' L! Q
  40. MODE_ABT .set 0x17: W+ T3 y* P" \- b
  41. MODE_UND .set 0x1B, M4 v+ |; |4 d  S8 N
  42. MODE_SYS .set 0x1F
      g& o  v& u0 {3 j! e. N
  43. " X$ k0 d. Z4 p  S* W% {
  44. I_F_BIT .set 0xC0
    8 T, K# A9 d4 w: e" v

  45. 0 R, \- U" ?0 O0 z2 P( C9 l  ]
  46. ;**************************** Code Seection ***********************************$ Z( I* u( B, O/ x+ @; O8 i6 B6 x
  47.         .text" p+ k2 H' r8 L* H; Z! \" s+ ~

  48. 5 E! k9 D; }" u' P, K
  49. ;7 I* t% \" r. Z5 P7 J7 ?
  50. ; This code is assembled for ARM instructions
    2 g- \2 k* u& n1 J6 ~1 R
  51. ;
    + O; t' H5 K  ~! v
  52.         .state32
    ! n- q; _" j% U- y. Q6 F
  53. 8 ?/ A8 L& w; f7 G/ p
  54. ;******************************************************************************' ~! Z6 S% e8 @8 \& n
  55. ;& v7 q  S! B7 T& \+ y  x
  56. ;******************************************************************************
    ! L; D! G+ G0 v. ?; R# B* Q& x
  57. ;
      \) C. l/ _  }3 r7 ]
  58. ; The reset handler sets up the stack pointers for all the modes. The FIQ and* g/ K. W) D  ^  s- y
  59. ; IRQ shall be disabled during this. Then, clearthe BSS sections, switch to the
    0 _) _! {# M& Y5 [
  60. ;  main() function.
    ' S) B7 ]3 ?4 Z3 M& x7 i; t
  61. ;( ]; K6 N' Z+ }% `3 m
  62. Entry:
    # _7 ~& e9 T' D1 `, k
  63. ;
    5 G! y2 [6 v' K7 a2 ?" ~5 P' s
  64. ; Set up the Stack for Undefined mode
    ; V4 A8 b, L+ k: w$ Z1 t6 a9 b
  65. ;7 B' F% B( Z+ @2 F  E; f
  66.          LDR   r0, _stackptr                   ; Read and align the stack pointer9 O1 d/ D- O) L. J7 o. t1 k' T0 z
  67.          SUB   r0, r0, #8, P& ]$ r: ?  E% `
  68.          BIC   r0, r0, #7+ H! k/ u: L) S# w8 e7 s
  69.          MSR   cpsr_c, #MODE_UND|I_F_BIT       ; switch to undef  mode  S2 a7 k7 Z7 s* W
  70.          MOV   sp,r0                           ; write the stack pointer
    2 Q; [3 n0 }9 j
  71.          SUB   r0, r0, #UND_STACK_SIZE         ; give stack space
    ( L% F  _! w$ B- C% W
  72. ;- K# L' `( L% [7 d
  73. ; Set up the Stack for abort mode5 f" [4 a# ~- r- _
  74. ;0 J% q- ]6 p# R" z0 Z( \
  75.          MSR   cpsr_c, #MODE_ABT|I_F_BIT       ; Change to abort mode
    8 i% B; ]( y3 R& ]! t, R
  76.          MOV   sp, r0                          ; write the stack pointer
    7 u* O: g" x. Q
  77.          SUB   r0,r0, #ABT_STACK_SIZE          ; give stack space+ N+ R6 X: R+ X- n. X3 e
  78. ;' \& a7 I: ]* P3 i. v" g$ p, g
  79. ; Set up the Stack for FIQ mode
    & V7 l! b: l4 @  @, _
  80. ;5 S1 `; S% V! x8 M/ |# B: ~
  81.          MSR   cpsr_c, #MODE_FIQ|I_F_BIT       ; change to FIQ mode
    7 ^" T! g) f# s" P: F
  82.          MOV   sp,r0                           ; write the stack pointer
    # |) p3 \! w3 H% i7 B& B
  83.          SUB   r0,r0, #FIQ_STACK_SIZE          ; give stack space
    ' w- E: }$ D" s# w
  84. ;
    ; D- L" Z  y+ t7 H
  85. ; Set up the Stack for IRQ mode
    ) [( g* Y# m0 c7 V
  86. ;* R! [* R% f& P8 T
  87.          MSR   cpsr_c, #MODE_IRQ|I_F_BIT       ; change to IRQ mode: X8 n) ~9 |& K
  88.          MOV   sp,r0                           ; write the stack pointer
    . @8 {) c3 D) m  Q) t6 O
  89.          SUB   r0,r0, #IRQ_STACK_SIZE          ; give stack space5 t" _/ Y+ z4 ]
  90. ;" x% N1 _( t# {5 q5 Q# b
  91. ; Set up the Stack for SVC mode' _0 G1 J; x/ f( Q* g: A
  92. ;
    * H4 B+ r6 _& S
  93.          MSR   cpsr_c, #MODE_SVC|I_F_BIT       ; change to SVC mode
    # B- h/ x: ?9 h: i
  94.          MOV   sp,r0                           ; write the stack pointer3 N5 s. L- w; m5 D
  95.          SUB   r0,r0, #SVC_STACK_SIZE          ; give stack space
    ( [# b% m; J8 e$ r2 z) |1 f2 ^
  96. ;
    , z! m. i% D3 h# W  \0 {
  97. ; Set up the Stack for USer/System mode2 b: h% y5 e, B$ m  x  @
  98. ;% C' m  r, l# y2 |; z
  99.          MSR   cpsr_c, #MODE_SYS|I_F_BIT       ; change to system mode& V5 {: S, h, }3 n1 [( S- Q# ~
  100.          MOV   sp,r0                           ; write the stack pointer. x) ]5 G: G( `! }

  101. , I6 {0 I2 R% E$ n: E' g& M
  102. ;9 N6 h8 `$ Z0 t- Z8 L, N
  103. ; Clear the BSS section here
    % L: X8 E* c  E, S4 b5 u7 U0 z; f
  104. ;1 w1 \: {2 d& v7 t6 M6 r
  105. Clear_Bss_Section:* n8 O) V7 i* x, d' \
  106. 7 r) x, D3 z0 [9 m' @5 X, k
  107.          LDR   r0, _bss_start                 ; Start address of BSS7 t+ O' `3 [" \7 M& f. V3 j
  108.          LDR   r1, _bss_end                   ; End address of BSS
    $ _9 A9 a1 n0 {/ Y
  109.          SUB   r1,r1,#49 G9 J( B( l, D/ w
  110.          MOV   r2, #0
    9 ?- S/ h9 b0 B& t  E* C9 G( B, w$ ]2 @
  111. Loop:
    7 Q: W3 {  m2 ^* Y4 t7 C
  112.          STR   r2, [r0], #4                    ; Clear one word in BSS4 n# D- t9 K! P0 i0 h: M6 l
  113.          CMP   r0, r1
    8 h* t+ ~; n5 ^9 T8 }" v
  114.          BLE   Loop                            ; Clear till BSS end. [$ v) W; Z- D9 P9 R4 _. M
  115. 8 p; E: G% ~0 J3 r* A2 R0 k/ W/ o
  116.          BL    __TI_auto_init                  ; Call TI auto init+ F, s, N1 W( S! B8 ?3 H
  117. / _, L1 o& r2 t. a6 F) U( K1 g
  118. ;
    5 A2 C9 o# L& ^! Q3 p" s) S; r( Q
  119. ; Enter the start_boot function. The execution still happens in system mode
    ( Q5 J0 s. h7 |% T; ^1 K5 |* `% R
  120. ;& V) b9 k( h) D) D
  121.          LDR   r10, _start_boot                 ; Get the address of start_boot
    / x" A! S( d" A. c* t
  122.          MOV   lr,pc                           ; Dummy return
    ; W4 F, m  K; ^9 \9 d- K
  123.          BX    r10                             ; Branch to start_boot9 @/ J7 A  S0 Y6 b8 b. x
  124.          SUB   pc, pc, #0x08                   ; looping/ O/ U! y; _' c9 [, d8 W
  125. 3 Y$ q& i  _3 P! G) f3 h$ M* V
  126. ;         MSR   cpsr_c, #MODE_SVC|I_F_BIT       ; change to SVC mode  O2 _& X: s# [  J4 Q+ y5 ~
  127. ;         BX   lr6 D2 X9 e( C0 D6 Z8 g5 ?' ]/ {
  128. ;
    1 p  S9 n2 d9 g+ ]+ e' M
  129. ; End of the file
    4 N  t. U9 Q+ L/ d
  130. ;" Y4 m0 w' v" V5 ?

  131. / s0 g: p: \) U
  132. _stackptr:
    ( }2 p( s4 I6 m, P( W
  133.     .word __STACK_END9 U7 Q! r0 ?3 A% _. c
  134. _bss_start:
    + a5 t) i2 P$ q& z. |
  135.     .word bss_start
    " X9 b' T9 X9 a0 U- V( M  n
  136. _bss_end:
    / I! p% q/ N" u/ @4 H( I" |
  137.     .word bss_end/ E1 \& G4 K' w) M- l8 ~2 j
  138. _start_boot:
    ; t0 I; \' H5 i: J1 l$ o3 t. |
  139.     .word start_boot& W! M  a- L/ M# O
  140. _data_auto_init:
    7 F' `5 M, w2 [+ x5 v: J# ~0 M
  141.     .word __TI_auto_init
    * m9 r' y: \1 a+ D- @; O! T% E
  142.          .end
    # |6 x7 Q/ W; X
  143.    
    # g) h: o8 m4 W$ B2 ]5 h  M1 j

  144. 5 B9 |; f. c. Q& O: o! m4 t+ j) Y' T
  145.   ]- F* |; G4 j. Y1 |
复制代码

# D! G4 V! z. ?2 H3 Z. u7 p4 k0 E( J( L4 p# A

5 d7 a. z: q6 ], P
( s" g' i& _5 T8 x0 v! ]
- }2 l: f" L& P  v
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|小黑屋|嵌入式开发者社区 ( 粤ICP备15055271号

GMT+8, 2024-5-11 00:53 , Processed in 0.039630 second(s), 23 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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