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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]

15

主题

1357

帖子

4579

积分

创龙

Rank: 8Rank: 8

积分
4579
楼主
发表于 2017-4-21 13:59:36 | 显示全部楼层
unicorn06 发表于 2017-4-21 11:40# u! `' q/ e) h9 v- X0 y
会不会你们的开发板和仿真器哪里不兼容?因为我感觉已经编写最简单的语句也不好使。 ...
5 M, x$ D8 a2 {2 n+ M- ~* O% D# W' `! x

, e1 o0 X! q( s0 N3 A6 t" b
" ?2 k, p4 d7 Q% GARM CPU 默认工作在用户权限无法改写 SYSCFG 寄存器的 需要切换到特权模式
, X% k+ P( i% y' e4 lDSP CPU 不存在这个问题
4 l4 [* ~( b5 s) B' l0 S0 }

本帖子中包含更多资源

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

x
回复 支持 反对

使用道具 举报

15

主题

1357

帖子

4579

积分

创龙

Rank: 8Rank: 8

积分
4579
沙发
发表于 2017-4-21 14:50:51 | 显示全部楼层
unicorn06 发表于 2017-4-21 14:34
  e/ N  S4 r- T$ P,高手~~~
1 D0 p: C# n2 ~% C正想和你们说这个事呢,我还买了一块c6748的核心板,实在没办法了,我就把c6748核心 ...
7 t* ]+ U7 k  L5 G; e6 L. i6 I1 a7 U
在 ARM 端 StarterWare 例程中 CMD 文件比 DSP 端多了这样一句* _! u8 F- ?/ z9 {
/* 重新配置程序入口点 */
. W( e3 {0 m$ r0 }8 T-e Entry
  1. /****************************************************************************/
    , j  y% s0 h" t, v, y. Z
  2. /*                                                                          */+ _; E8 q. i/ X( I' _
  3. /*              OMAPL138 及 DSP C6748 内存空间分配定义                      */
    & s/ R+ {" ^, B! |
  4. /*                                                                          */- |0 j( a) h4 v, b
  5. /*              2015年04月20日                                              */
    6 S8 ^; b& s3 Y. V7 M+ n0 O$ D6 b8 ^
  6. /*                                                                          */% j7 O! N9 x7 L% q- \, a2 k
  7. /****************************************************************************/
    2 B) |0 ]  [1 r& p; W
  8. /* 堆栈 */* k3 D# m, U/ ^- p5 N
  9. -stack  0x8000, h2 w3 k  ]' w& m" M) i$ K
  10. -heap   0x2000& h! F% p4 k# b4 L

  11. 7 I& P/ }/ K3 G& p& s
  12. /* 重新配置程序入口点 */; N6 ~( p. h9 W5 A2 a% c: S4 Q
  13. -e Entry
    1 |: ~; n4 T/ H- Q' |+ ~
  14. + r0 }3 F: E8 S6 U0 k0 t. R
  15. MEMORY$ |  {3 z9 D; l  F6 J6 n
  16. {
    7 M# H. q' `" ]1 s( x3 n5 T
  17. #ifdef DSP_CORE& L2 q. {- j7 I6 p
  18. /****************************************************************************/7 v, `& }% X4 Y
  19. /*                                                                          */  @; R3 C1 g) V1 S7 J" d: ?( W+ A
  20. /*              DSP 专有内存区域                                            *// \2 W$ X4 G' _  I# |9 ?% u
  21. /*                                                                          */; q+ G3 ~: S6 N( i" M# I" D6 h
  22. /****************************************************************************/6 c3 j3 [6 s9 u! [6 C
  23.     DSPL2ROM     o = 0x00700000  l = 0x00100000  /* 1MB   L2 DSP 本地 ROM (DSP ROM Bootloader) */
    & g, |, D+ A* L
  24.     DSPL2RAM     o = 0x00800000  l = 0x00040000  /* 256kB L2 DSP 本地 RAM */; T' l2 _# B: r7 I# {$ |
  25.     DSPL1PRAM    o = 0x00E00000  l = 0x00008000  /* 32kB  L1 DSP 本地程序 RAM */" ~, e, u5 G' _& }
  26.     DSPL1DRAM    o = 0x00F00000  l = 0x00008000  /* 32kB  L1 DSP 本地数据 RAM */7 }. m( l1 p$ |0 O) Y( J
  27. #endif
复制代码
这是一段汇编代码用于切换到特权模式
: _0 ~, z& U) s/ r* T- k# @1 L) x# U0 _1 M# v( m$ c
OMAPL138_StarterWare_1_10_04_01\system_config\armv5\cgt\init.asm- R" |% @, g% W/ d& ?
  1. ;******************************************************************************
    9 b+ P) Q+ I! T% e- d
  2. ;
    5 G0 ~. W3 x) v* L3 M( S
  3. ; init.asm - Init code routines
    ! l+ y% E' C) j% `( G- f
  4. ;4 H: ~3 P9 }- ^% T
  5. ; Copyright (C) 2010 Texas Instruments Incorporated - http://www.ti.com/
    * U% u/ Y8 S! r8 o7 \
  6. ; All rights reserved.
    ( e: v! ~+ U) ~( @$ U4 V! ?! f- X
  7. ;
    4 U! B6 v$ _5 C
  8. ;******************************************************************************0 p' i( }) R4 s: k$ n
  9. ;****************************** Global Symbols*******************************
    7 _9 _: m! u7 j; r( M4 ^/ S* T
  10.         .global Entry
    * [% x$ D! p6 H+ ?
  11.         .global start_boot' f/ n8 K1 d. H5 O1 l9 l) c1 _4 H
  12.         .global __TI_auto_init% V. O6 i# ]8 Q# J$ z, Z; \1 u
  13. 1 i/ S' G# F- H6 X7 g9 G
  14.         .ref __stack: b$ V- X$ O- T" b7 i: R/ c/ j9 G
  15.         .ref __STACK_END
    / x7 j% E) N" n7 E% d
  16.         .ref bss_start
    ! P. @8 }! Y: u" i. g( F
  17.         .ref bss_end" _. B6 q8 L8 `( ~
  18.         .ref start_boot
    $ T# Y3 \$ V" j1 s4 l

  19. " Y6 A2 r3 ?6 l+ w- m' ~6 I
  20. ;************************ Internal Definitions ******************************
    ; H0 Z7 B% X" m1 h& j  p6 a5 q7 m' h' z
  21. ;
    2 v' w2 v7 A& N7 m: A& i) `
  22. ; Define the stack sizes for different modes. The user/system mode will use
    ; g9 [7 @# M4 f. L
  23. ; the rest of the total stack size
    , u, u% y" R0 ?' M
  24. ;
    ; N5 R- Q3 X) l8 W. H) K
  25. " \3 r  l' E9 m/ X; r. D
  26. UND_STACK_SIZE .set 0x8: w0 \' ~# A" l* ]1 j& q" T
  27. ABT_STACK_SIZE .set 0x8
    2 i6 R8 N$ V  B
  28. FIQ_STACK_SIZE .set 0x8
    . R8 k2 D) ^3 `5 U
  29. IRQ_STACK_SIZE .set 0x500# ?0 Q- d& {5 ?2 }/ z/ S( j
  30. SVC_STACK_SIZE .set 0x83 y. e4 H. e! I, S3 N

  31. # _3 j  Q: {* w
  32. ;6 j0 O* ~' U, @
  33. ; to set the mode bits in CPSR for different modes9 f) ?  |4 R2 a5 v# x
  34. ;7 R+ I) T/ x" X9 E, Q$ w
  35. # @. H/ ?3 ^( I: ^: f( C3 }
  36. MODE_USR .set 0x105 u' q0 i- Q& {. k
  37. MODE_FIQ .set 0x11& i! T; a# G- m) f8 L% M6 Y
  38. MODE_IRQ .set 0x12
    3 ~9 h* q: K7 D# ~3 i4 z. ?
  39. MODE_SVC .set 0x13
    & B* w1 q, @, I, J) p7 T
  40. MODE_ABT .set 0x17
    $ C" q! u$ F2 z" i8 Q/ x
  41. MODE_UND .set 0x1B, o# }7 ~! m6 u( X9 {3 O$ T
  42. MODE_SYS .set 0x1F+ c( ]! d  }' b7 L, M% O
  43. ) r9 l9 i& d" {6 }  H8 B
  44. I_F_BIT .set 0xC0
    % Y6 m3 J, F! e0 L% p
  45. . I- C3 P' R" h" h$ N7 m
  46. ;**************************** Code Seection ***********************************9 s* T( j' g) N
  47.         .text
    0 t4 Q: Z+ }6 A9 B
  48. , D: ~) ~( I7 m4 r8 Q: U
  49. ;7 |4 O, T" A0 g  x$ g& p. ~7 v8 _
  50. ; This code is assembled for ARM instructions
    1 s; f+ N- Z4 r9 ~- V) R$ G4 [
  51. ;
    . i" k3 e3 t0 z  E2 Q+ o4 k
  52.         .state32: M- M$ W$ e( o$ b! q

  53. 3 |( G7 j/ H3 `5 J8 z
  54. ;******************************************************************************
    6 |4 P$ s- J8 {* K( {1 ]
  55. ;( v9 H# t5 d" w% M/ Q
  56. ;******************************************************************************, c1 f9 G$ ?; ~+ h! V1 m
  57. ;
    ) j  O1 b& `+ \  ?1 E4 a
  58. ; The reset handler sets up the stack pointers for all the modes. The FIQ and
    3 v2 `& h4 B& C2 d0 ]
  59. ; IRQ shall be disabled during this. Then, clearthe BSS sections, switch to the8 T( y, W% }! Y# Y( k9 n
  60. ;  main() function.( I8 Q' n" W  Q- n
  61. ;
    ) G1 E+ v6 R) Y# _# Z
  62. Entry:8 h& x0 B5 |! i% p! N
  63. ;
    & G" s/ u/ O6 I
  64. ; Set up the Stack for Undefined mode! ?. i3 X* s' [5 H7 [
  65. ;
    + L' K* w$ O" @, L  A
  66.          LDR   r0, _stackptr                   ; Read and align the stack pointer
    ) O8 ^& @; A* S" g1 I8 f6 l0 ^
  67.          SUB   r0, r0, #8
    3 E  D: E) d& l7 V
  68.          BIC   r0, r0, #7
    ' a& q6 O" S# b$ L
  69.          MSR   cpsr_c, #MODE_UND|I_F_BIT       ; switch to undef  mode
    ! S: }- I4 e9 C
  70.          MOV   sp,r0                           ; write the stack pointer
    , j" v6 K- T) c# Z
  71.          SUB   r0, r0, #UND_STACK_SIZE         ; give stack space
    1 H: ~) `  H2 i" E, E) z
  72. ;. }# ^% p$ x7 p( j' k* E  |
  73. ; Set up the Stack for abort mode
    . z0 ]7 p$ C0 `4 i, C# \( _6 g
  74. ;$ H# Y' J; i8 \& e' F" I& D: Y
  75.          MSR   cpsr_c, #MODE_ABT|I_F_BIT       ; Change to abort mode
    , B  \4 E) j" u% ~% l
  76.          MOV   sp, r0                          ; write the stack pointer
    - C) O; ~/ i+ o  u1 x
  77.          SUB   r0,r0, #ABT_STACK_SIZE          ; give stack space
    & b' T8 ?- B6 C. k
  78. ;' D, e' @, G7 _
  79. ; Set up the Stack for FIQ mode
    7 H) b) P1 ^9 t1 I7 F- W
  80. ;
    . {! v! V* I7 _/ Y" v
  81.          MSR   cpsr_c, #MODE_FIQ|I_F_BIT       ; change to FIQ mode
    5 x' |, q  I4 S( s) X  G
  82.          MOV   sp,r0                           ; write the stack pointer, _& n, K0 A- w! U
  83.          SUB   r0,r0, #FIQ_STACK_SIZE          ; give stack space- X1 }+ w' n1 a* q& ?' \) Y
  84. ;
    # b; U; K$ N2 A4 ?* K* x
  85. ; Set up the Stack for IRQ mode8 A% ?9 O8 m3 p  A7 `$ b& s
  86. ;
    ) U% O/ O9 S3 ~) r
  87.          MSR   cpsr_c, #MODE_IRQ|I_F_BIT       ; change to IRQ mode" d, y0 j  [5 @+ E
  88.          MOV   sp,r0                           ; write the stack pointer. G; T4 N+ Q2 T9 t* f6 ?
  89.          SUB   r0,r0, #IRQ_STACK_SIZE          ; give stack space  O2 w* @, u6 d/ ~. N& I6 W
  90. ;
    & g  |$ d- B5 r  z/ c' }" O
  91. ; Set up the Stack for SVC mode. b* Y0 C9 n8 |8 s# r
  92. ;3 H* E  Q1 ^7 O" p
  93.          MSR   cpsr_c, #MODE_SVC|I_F_BIT       ; change to SVC mode9 A  o6 I7 U2 Z( @/ M) {  l
  94.          MOV   sp,r0                           ; write the stack pointer
    $ H/ `- j$ c4 f" n; }1 x1 l( Z* J8 U3 j
  95.          SUB   r0,r0, #SVC_STACK_SIZE          ; give stack space
    , x0 d+ v3 ^& ?/ `
  96. ;
    6 P0 I" ?8 \! v! C3 u4 V8 r
  97. ; Set up the Stack for USer/System mode
    1 `2 q/ k7 k( r: T
  98. ;2 X2 p# B) X, Q+ @4 V
  99.          MSR   cpsr_c, #MODE_SYS|I_F_BIT       ; change to system mode( @, a' J% L9 V' q6 Q
  100.          MOV   sp,r0                           ; write the stack pointer
    1 l, M. X" ]* F6 r' H8 [, V: T$ ^
  101. - j& i% W# Q# j6 u7 d
  102. ;
    0 s& E2 R* g# e: g: r% v3 _& b
  103. ; Clear the BSS section here, f% J; Q$ t: X
  104. ;
    & R" a  g; G  H
  105. Clear_Bss_Section:
    ; s& d" a4 g2 d

  106. / F3 K6 r; }- ^
  107.          LDR   r0, _bss_start                 ; Start address of BSS: o" h% `. O# i" a' @* h3 E
  108.          LDR   r1, _bss_end                   ; End address of BSS
    ) N; q- ~  K+ @6 X+ o1 c
  109.          SUB   r1,r1,#4
    ! C' h- u3 E/ ~
  110.          MOV   r2, #0
    0 x. g% g. E1 i+ D  N- N
  111. Loop:0 _# J5 J* l0 `1 j( c
  112.          STR   r2, [r0], #4                    ; Clear one word in BSS$ u7 V+ j/ _6 g6 B0 v6 m0 \$ m
  113.          CMP   r0, r1
    - m3 E2 X# T' D6 t) S- ~3 R6 _
  114.          BLE   Loop                            ; Clear till BSS end
    1 E6 J! q5 s6 p) D6 ^
  115. 7 B& h1 O6 Y' L; s3 d* \3 l( \
  116.          BL    __TI_auto_init                  ; Call TI auto init# `' J# T( O3 h( g. }( b3 V

  117. . K+ A7 m$ v, `2 }( U
  118. ;
    ( E7 @& H2 c1 w3 @+ X) l$ t8 y" {5 g
  119. ; Enter the start_boot function. The execution still happens in system mode9 J1 n, l2 n7 l- ?$ y5 u
  120. ;  b: z/ v( E! r
  121.          LDR   r10, _start_boot                 ; Get the address of start_boot
    8 `& O. b4 `4 Z( D; d
  122.          MOV   lr,pc                           ; Dummy return / w  X$ Y) |) G* M' C# p
  123.          BX    r10                             ; Branch to start_boot+ T7 g- W$ _% ]" d
  124.          SUB   pc, pc, #0x08                   ; looping+ m; W, H) }- y" L: i6 A

  125. ( t4 X+ f- S- c  w
  126. ;         MSR   cpsr_c, #MODE_SVC|I_F_BIT       ; change to SVC mode
    ( {9 l$ ?' V) i! f) {4 J
  127. ;         BX   lr+ [, [% _( w7 {$ P* t2 z5 v
  128. ;: H+ h/ f' `  X% E7 s2 z0 N
  129. ; End of the file0 r* T6 {. n4 y# _6 ?! {. `6 d
  130. ;
    8 ^% g- q, s7 X) o: x

  131. " u: m1 e0 t& R' T1 P+ E1 ]3 X
  132. _stackptr:
    # u$ M6 D! t* B" ?2 ~: v
  133.     .word __STACK_END5 Y, F! X1 O7 E, L
  134. _bss_start:$ x4 F6 L( ]0 r; X
  135.     .word bss_start: O4 [. h; A- }- A* W9 F
  136. _bss_end:" o" D7 M' K$ Q- S
  137.     .word bss_end
    . H. p2 I! L1 a7 T& r1 M# U
  138. _start_boot:
    7 I% @6 h9 }$ ]+ \+ h8 o
  139.     .word start_boot
    0 g& @+ t1 L! Q9 W) F2 D0 g
  140. _data_auto_init:
    + l, u' C" e) W# h! ]6 B
  141.     .word __TI_auto_init2 h9 H3 Z$ E7 p% G) b+ E0 [9 Y
  142.          .end
    9 L% y$ {) s+ i3 p0 Q6 Y
  143.    
    2 Z: T- q& l$ q5 L4 i7 p7 c% C5 ?

  144. , h  P3 f( L6 S: U- H) D: M7 u
  145. , z9 p8 z- ^  q, C( k- D- o9 f& z
复制代码

0 S3 R3 A+ N! J: n) ~, i! X5 ]9 i$ N% ]  l" Y3 p
' N7 F- B; O: \3 {' m

5 ^5 ^/ I# v5 x( m: `. B" d. J* H8 a4 y& u/ D# ~7 L1 s; p4 `! N+ `
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-3 23:05 , Processed in 0.040138 second(s), 23 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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