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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]

15

主题

1357

帖子

4579

积分

创龙

Rank: 8Rank: 8

积分
4579
楼主
发表于 2017-4-21 13:59:36 | 显示全部楼层
unicorn06 发表于 2017-4-21 11:406 K" z9 W% I$ O4 P. m
会不会你们的开发板和仿真器哪里不兼容?因为我感觉已经编写最简单的语句也不好使。 ...
9 y3 [$ x& o) e# ?3 N+ j! x

. Z1 m% j+ t: u2 v2 o5 _, w3 J# [- N, j+ t
ARM CPU 默认工作在用户权限无法改写 SYSCFG 寄存器的 需要切换到特权模式
4 C6 V7 B" g: [0 c- T8 I0 b9 MDSP CPU 不存在这个问题! D; L4 m, @( ?+ U$ h& K% p1 A3 Q

本帖子中包含更多资源

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

x
回复 支持 反对

使用道具 举报

15

主题

1357

帖子

4579

积分

创龙

Rank: 8Rank: 8

积分
4579
沙发
发表于 2017-4-21 14:50:51 | 显示全部楼层
unicorn06 发表于 2017-4-21 14:34  j2 ~( @  y  w& s( U4 Y
,高手~~~) p4 I3 l& g1 K) z
正想和你们说这个事呢,我还买了一块c6748的核心板,实在没办法了,我就把c6748核心 ...
' X  ]: Y' N. b( w
在 ARM 端 StarterWare 例程中 CMD 文件比 DSP 端多了这样一句
7 O* l9 d' R) t  z; J/* 重新配置程序入口点 */
7 Y9 ?8 b7 Q1 N) z3 b-e Entry
  1. /****************************************************************************/+ i# d4 k! Z2 V& H2 x* U6 E1 I' r
  2. /*                                                                          */
    7 n6 R/ a0 Q. s6 S( X" C4 m
  3. /*              OMAPL138 及 DSP C6748 内存空间分配定义                      */
    0 v# x4 D6 d8 H$ b9 b- Y
  4. /*                                                                          */) c5 l* N9 l2 [1 J/ |
  5. /*              2015年04月20日                                              */
    ( ~' d" j) ?) p* n
  6. /*                                                                          */
      W$ M. y/ \# L. ~
  7. /****************************************************************************/
    ( ]! D: f; B- }
  8. /* 堆栈 */3 p$ w5 t3 L9 l7 C, N, S+ X  X0 _, M
  9. -stack  0x80005 d  Y$ c4 P7 V
  10. -heap   0x2000$ L5 Y; }( W" q

  11. ; J) c  y7 P. ~  i, q
  12. /* 重新配置程序入口点 */
    * h" Q3 J8 n- D* i
  13. -e Entry
      ~: R5 d$ d7 T7 S" |

  14. 5 Z% f$ d3 q2 V( n. G
  15. MEMORY, V, w9 a# Q, e7 Q+ y  D: g: r
  16. {3 _: H$ I6 x: m0 V! O/ K
  17. #ifdef DSP_CORE
    7 Q* j  z. l' H. T: q2 M; \
  18. /****************************************************************************/4 o% O- c, p: t
  19. /*                                                                          */' f: V* Q# W3 A( [! a' P# \7 ^
  20. /*              DSP 专有内存区域                                            */
    2 w& U5 N' p, v6 e
  21. /*                                                                          */
    ) e2 a% M. w% ]4 J
  22. /****************************************************************************/
    0 {* x9 h5 D1 _9 M0 R8 g3 a' V
  23.     DSPL2ROM     o = 0x00700000  l = 0x00100000  /* 1MB   L2 DSP 本地 ROM (DSP ROM Bootloader) */) r$ r2 P( D1 _+ s6 D3 O' k
  24.     DSPL2RAM     o = 0x00800000  l = 0x00040000  /* 256kB L2 DSP 本地 RAM */+ P8 d6 }, k1 y. p7 ^# e3 e/ z
  25.     DSPL1PRAM    o = 0x00E00000  l = 0x00008000  /* 32kB  L1 DSP 本地程序 RAM */
    8 M5 p: ~# q# Y! b6 p) @2 t
  26.     DSPL1DRAM    o = 0x00F00000  l = 0x00008000  /* 32kB  L1 DSP 本地数据 RAM */
    / G7 }8 |; v  X! o8 p* T
  27. #endif
复制代码
这是一段汇编代码用于切换到特权模式
# y! p) A0 U. w3 P3 k: E& L* G
$ ^& f( E9 t' o3 ~) @$ [OMAPL138_StarterWare_1_10_04_01\system_config\armv5\cgt\init.asm% i! S9 r' b3 E
  1. ;******************************************************************************
    ' f' _+ k/ E, W! j7 S; P7 p% @
  2. ;
    / _4 E/ m0 B1 m
  3. ; init.asm - Init code routines
    . N8 I2 l: M3 B7 m" `( R9 A- y3 ~
  4. ;
    6 i7 b8 y4 \: W) g5 B+ c
  5. ; Copyright (C) 2010 Texas Instruments Incorporated - http://www.ti.com/
    % Y  D: k8 c- H( ~2 U1 W, p; F
  6. ; All rights reserved.
    , B. y' s7 s0 Z; v+ f( v& `# j
  7. ;
    6 B; r4 s! J$ E3 v: ~5 X
  8. ;******************************************************************************
      R3 {* @" L, z, m5 k
  9. ;****************************** Global Symbols*******************************( }* o/ ?0 @, e9 m2 R" W0 |% \
  10.         .global Entry) e1 G) I2 H* m1 d* p- f1 R
  11.         .global start_boot
      N0 K- |6 p! M; \7 B
  12.         .global __TI_auto_init  W- e( _( U$ W5 r
  13. , g  I# g7 L& U
  14.         .ref __stack& a3 J8 {$ I7 W+ }
  15.         .ref __STACK_END2 I: C  W+ u8 q# X) W
  16.         .ref bss_start8 V5 N& J) e- H# c" D
  17.         .ref bss_end/ g  N) i" K" ]+ V4 |) \3 ?
  18.         .ref start_boot
    ; T$ ^* F4 z+ @% g& k* e- a6 l

  19. ! e, D  `3 C4 i3 K4 G
  20. ;************************ Internal Definitions ******************************
    & Y& ?5 J$ Q' k1 t7 h  R4 \
  21. ;' B* |1 M* V, Z: F7 n, f6 |: S
  22. ; Define the stack sizes for different modes. The user/system mode will use  F, _7 h; t% }; y$ B
  23. ; the rest of the total stack size+ J8 {- X! S$ ?
  24. ;
    0 m; x. P* h1 R/ {) u5 w& y$ ?
  25. + ^) M# H0 @; C/ t
  26. UND_STACK_SIZE .set 0x8  Q% W# R% f) y- m- A$ h7 v# A
  27. ABT_STACK_SIZE .set 0x8" D2 y' H$ x7 @( z
  28. FIQ_STACK_SIZE .set 0x81 a4 Y; f/ E  }+ v% G
  29. IRQ_STACK_SIZE .set 0x500
    / a/ d! O" d. F9 ]; |  |
  30. SVC_STACK_SIZE .set 0x85 F6 Q+ p8 u9 |. i+ t: r3 @

  31. 7 [7 Z+ u  ?4 n' G0 \
  32. ;
    7 J. v+ ~9 W8 F7 x* x' e; o
  33. ; to set the mode bits in CPSR for different modes
    0 |. L$ P. ]# ]9 {* y6 k  A1 a
  34. ;
      f3 G' P0 b# n# M: R- e1 v+ K
  35. 8 S9 H7 N; X$ k0 |) L- B
  36. MODE_USR .set 0x10
    4 B& y6 R) N: P+ j
  37. MODE_FIQ .set 0x111 _$ v6 S8 u; L( g3 n. S
  38. MODE_IRQ .set 0x12! d, ~7 H# E$ G; F* p
  39. MODE_SVC .set 0x134 w5 {! E0 K6 Q  u: N9 _, [! f3 R
  40. MODE_ABT .set 0x177 P' M, j0 X4 c# v+ b# E
  41. MODE_UND .set 0x1B
    9 t) o+ A1 ^+ ?- @& A$ m
  42. MODE_SYS .set 0x1F
    4 F* t2 z* c) j
  43. 3 o" r- ^- C0 I
  44. I_F_BIT .set 0xC00 z7 t2 ~# S2 d- g
  45. # {, v2 F& w3 c$ r  j7 A
  46. ;**************************** Code Seection ***********************************" i) z% {/ \4 r7 M+ R. n: ]# s
  47.         .text, j. H: g1 L4 |
  48. / c" G4 C' o  c" z
  49. ;, ?( ^9 C$ i, N6 n8 x
  50. ; This code is assembled for ARM instructions# j; E- m( {. E; o5 j
  51. ;. f5 U$ V4 p4 P
  52.         .state32
    4 D; }* o2 G1 g' m& J

  53. - A( k0 F' x& s+ B% ^4 {1 ?
  54. ;******************************************************************************) u* ^4 V  |: V# @% K3 Z9 i! }, k
  55. ;( \  [+ n6 L8 ?& z2 q' ~
  56. ;******************************************************************************
    ; Y2 G7 ]; K6 C4 B# a, T
  57. ;
    - r7 i$ N7 v1 R- u
  58. ; The reset handler sets up the stack pointers for all the modes. The FIQ and" w  J& _" S" ^* P
  59. ; IRQ shall be disabled during this. Then, clearthe BSS sections, switch to the; o+ J; r  C9 I4 y# Q  a2 m
  60. ;  main() function.; W- a; h, e' d& j* g" V! J* m" i' d
  61. ;5 s: }4 E8 R' h( o; @4 G: @& C# B
  62. Entry:
    ! O2 Y8 X  c. K* q/ t
  63. ;
    - Z$ |/ `4 y' k3 P) O: ]: g# W4 c# }4 T
  64. ; Set up the Stack for Undefined mode
    * G' A' |, ~' ]) {- b% M
  65. ;
    $ t+ n6 ?  S; o% ~8 b$ L6 m
  66.          LDR   r0, _stackptr                   ; Read and align the stack pointer
    . j4 c6 X1 G! e9 k2 S% t
  67.          SUB   r0, r0, #8
    ( J, G2 x  z) o+ `0 t6 M$ q  G
  68.          BIC   r0, r0, #7, F$ I( A) L( X8 z) }. L6 t7 v
  69.          MSR   cpsr_c, #MODE_UND|I_F_BIT       ; switch to undef  mode
    7 \- D# J' c5 e0 t! {4 K* F
  70.          MOV   sp,r0                           ; write the stack pointer4 [& q+ o5 x( n3 ^2 |: ?. c, K- n" J
  71.          SUB   r0, r0, #UND_STACK_SIZE         ; give stack space
    7 ]7 A* C5 M5 o7 {! k0 r2 H
  72. ;
    " d4 ]& Z# e  S7 _$ M
  73. ; Set up the Stack for abort mode
    ) ]$ t+ v5 J! p' N
  74. ;/ n; @$ {/ c$ d0 g9 ?
  75.          MSR   cpsr_c, #MODE_ABT|I_F_BIT       ; Change to abort mode7 T6 Y! a9 h% F0 e6 a
  76.          MOV   sp, r0                          ; write the stack pointer
    2 N  _* f* e+ Y8 [
  77.          SUB   r0,r0, #ABT_STACK_SIZE          ; give stack space
    " x. @1 `( D: M* i. h0 p, o4 w
  78. ;  Z8 m2 I* x. l
  79. ; Set up the Stack for FIQ mode! Z! q' \, ?9 U' H  T! ?& K2 F" s
  80. ;
    1 O  O' T5 Z( e1 R" k. o" ?
  81.          MSR   cpsr_c, #MODE_FIQ|I_F_BIT       ; change to FIQ mode
    ; B8 b- v" s9 [* y; x6 b" M
  82.          MOV   sp,r0                           ; write the stack pointer9 K7 h3 v4 B5 y7 t+ K0 [+ C9 ^
  83.          SUB   r0,r0, #FIQ_STACK_SIZE          ; give stack space
    ! F6 O4 u) d2 P4 h# e7 _
  84. ;( A# x) j' R" \# \. A
  85. ; Set up the Stack for IRQ mode7 N. T) a2 d- ?; |. w( O$ ?& [2 U: \
  86. ;
    ) d9 G3 e2 I$ j6 W9 k
  87.          MSR   cpsr_c, #MODE_IRQ|I_F_BIT       ; change to IRQ mode* m$ @4 y) j4 p
  88.          MOV   sp,r0                           ; write the stack pointer
    % W3 W$ A1 a* X8 h
  89.          SUB   r0,r0, #IRQ_STACK_SIZE          ; give stack space
    8 n! ?+ c* w/ e
  90. ;
    1 H$ J/ p  H/ S/ i) x
  91. ; Set up the Stack for SVC mode
    # ^3 u4 T1 E  U
  92. ;. W) ]4 w/ |0 s" P3 P
  93.          MSR   cpsr_c, #MODE_SVC|I_F_BIT       ; change to SVC mode
    % Y3 Z2 o* E( C8 g
  94.          MOV   sp,r0                           ; write the stack pointer. P7 [8 h6 K( M% N! G
  95.          SUB   r0,r0, #SVC_STACK_SIZE          ; give stack space
    # y$ u, O$ i/ v8 s7 v
  96. ;# E4 A2 V$ }& {
  97. ; Set up the Stack for USer/System mode! _* g) M4 y5 x8 \: z
  98. ;
    " D$ B$ Q  x+ X; V& M$ C( J& L
  99.          MSR   cpsr_c, #MODE_SYS|I_F_BIT       ; change to system mode3 h/ E* m8 N( T" W( _# ^3 x2 c
  100.          MOV   sp,r0                           ; write the stack pointer0 Y6 x1 e' H6 P& I" V3 U; ?

  101. ; G: W5 e8 L' c8 h& B/ `! D' I
  102. ;" I" L( }5 P% g' D
  103. ; Clear the BSS section here4 V, P# z" O/ Z5 x" C
  104. ;
    6 D! a9 E" G& h6 T7 e6 R: _
  105. Clear_Bss_Section:# `/ D4 O' e1 V4 s7 V9 {( G; Q

  106. 6 r9 a9 P8 T4 r. y6 ^
  107.          LDR   r0, _bss_start                 ; Start address of BSS
    ! S- r. }1 H& L. u  A
  108.          LDR   r1, _bss_end                   ; End address of BSS  _  B; t3 v8 O# s/ ~
  109.          SUB   r1,r1,#4
    9 S4 `' Z3 d. R' ]# _
  110.          MOV   r2, #0
    0 l  n" j# R3 @$ Q6 i
  111. Loop:$ }" h8 g$ |0 j8 {+ P
  112.          STR   r2, [r0], #4                    ; Clear one word in BSS
    6 E3 Z! y' R% o1 W& Z- k
  113.          CMP   r0, r1
    : S' o6 d. S5 j& _
  114.          BLE   Loop                            ; Clear till BSS end
    # j% o, A% w; w. M

  115. , a, M9 K( G: i9 x0 m. ]+ E
  116.          BL    __TI_auto_init                  ; Call TI auto init4 y# n; C) N2 ^  ~7 P
  117. 6 U7 D* C) p) g7 d
  118. ;
    8 j3 o% C  S% F7 w9 e  s
  119. ; Enter the start_boot function. The execution still happens in system mode
    4 v# J$ B0 Y6 }) p& z6 F
  120. ;
    % B/ q+ E% t8 L1 C" ~- b5 ?0 D' h" G4 b) k
  121.          LDR   r10, _start_boot                 ; Get the address of start_boot
    6 \- Z; O( R- [5 _* y$ v
  122.          MOV   lr,pc                           ; Dummy return
    3 Y$ _. k2 i1 r8 \$ o+ P
  123.          BX    r10                             ; Branch to start_boot# v5 M- T. j& ~1 m3 V. g; {+ W
  124.          SUB   pc, pc, #0x08                   ; looping
    . ]# Y4 d5 m* o+ L
  125. 6 \  Y/ {# J, D9 a
  126. ;         MSR   cpsr_c, #MODE_SVC|I_F_BIT       ; change to SVC mode7 \- d( E8 C% }
  127. ;         BX   lr
    7 V5 q, L0 ?  @/ Y) n5 N3 Z
  128. ;
    4 |4 ~$ F. U$ [# f! s* C
  129. ; End of the file) {# s4 I- e; U; p5 x
  130. ;
      \: k, _4 K7 w

  131. ( z; O& O' s$ y: Q
  132. _stackptr:
    / \1 n0 f4 s- E9 S
  133.     .word __STACK_END! {7 }6 d8 _) x2 @
  134. _bss_start:
    2 y/ u' D6 P- }/ t
  135.     .word bss_start
    3 D* _3 N! @0 d5 M9 Z' |3 M$ p
  136. _bss_end:! u) z) ?! d" c% [2 w, `! l' }  W
  137.     .word bss_end! p7 E: m5 b. z; E) `6 w
  138. _start_boot:
    $ {6 w6 O% D1 m
  139.     .word start_boot( ~8 X3 l9 a' G. H5 j
  140. _data_auto_init:9 h) @4 z) X+ q- r# ?" G
  141.     .word __TI_auto_init2 n( X3 M: P! [
  142.          .end$ `# Y  f& i0 G6 B9 g! i
  143.     ' D% h, @% ~6 |9 _' w& S8 `
  144. 4 v0 {( {; d2 T- F

  145. 2 @2 D" }9 Z/ f7 l& b/ i5 K
复制代码
/ O$ j7 T4 M+ ?4 ?

3 O+ c/ o9 L% z0 w9 A
9 Q8 l3 c* \8 t1 n  u/ y# e% i! \3 K9 I5 w

' ~- |$ g7 I( B/ D% Y
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-9 14:26 , Processed in 0.041065 second(s), 23 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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