免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12
最近访问板块 发新帖
楼主: longxinhui
打印 上一主题 下一主题

at91sam9261 inituart debug problem [复制链接]

论坛徽章:
0
11 [报告]
发表于 2009-09-25 17:53 |只看该作者
原帖由 whamse 于 2009-9-25 17:32 发表
问:
enable PIO to control pin ,disables peripheral control of the pin(LED是这种方法)
disable PIO to contro pin, enable peripheral control of the pin(串口用这种方法)

LED和串口都是外设 他们 ...





典型的情况,GPIO可配置成两大类功能:
1、普通IN/OUT引脚,可配置成为普通in或out引脚
2、特定设备,分配给特定设备的引脚,如UART、IRQ引脚等


你所说的

enable PIO to control pin ,disables peripheral control of the pin
disable PIO to contro pin, enable peripheral control of the pin

就是ATMEL GPIO中的第一次(第一层)配置,即PIO引脚还是特定设备,而且现在还没决定具体是什么设备。



具体怎么配置取决于你最终的用途,即上图中第二层的选择。

论坛徽章:
0
12 [报告]
发表于 2009-09-25 18:18 |只看该作者
看来有初学者混淆了AT91中两个基本概念:PA/PB与Peripheral A/Peripheral B
PA/PB:即PIO A,AT91SAM9261中有三组PIO:A/B/C。
Peripheral A/B:AT91中将某些设备统称为Peripheral,注意,PIO等章节中谈到Peripheral时,PIO本身不在Peripheral之列!即除PIO之外的特定设备,如UART/Clock/IRQ等。(这也是AT91系列文档的一个不足之处)

论坛徽章:
0
13 [报告]
发表于 2009-09-25 18:22 |只看该作者
原帖由 voidjackjiang 于 2009-9-25 17:32 发表
还遇见一个问题,就是汇编源文件如果使用了宏,当文件以小s做为后缀时,编译会报如下错误:
internal_relocation (type: OFFSET_IMM) not fixed up
而以大S做为文件后缀,编译则不会报错。


GNU Toolchain支持.S(大S)中使用C预编译语法,包括#define/#include等,但须用gcc编译,否则可使直接使用as编译

论坛徽章:
0
14 [报告]
发表于 2009-09-25 19:09 |只看该作者
#include"atmel.h"

.global GTopHalfEntry
.global Hang

GTopHalfEntry:
        ldr   pc,vect_reset
    ldr   pc, vect_undef
    ldr   pc, vect_swi
    ldr   pc, vect_iabort
    ldr   pc, vect_dabort
    .word 512
    ldr   pc, vect_irq
    ldr   pc, vect_fiq

vect_reset:
    .word handle_reset
vect_undef:
    .word handle_undef
vect_swi:
    .word handle_swi
vect_iabort:
    .word handle_iabort
vect_dabort:
    .word handle_dabort
vect_irq:
    .word handle_irq
vect_fiq:
    .word handle_fiq

handle_fiq:
handle_irq:
handle_dabort:
handle_iabort:
handle_swi:
handle_undef:
handle_reset:
    msr   cpsr, #((ARM_MODE_SVC) | (ARM_INT_MASK))

@LED
    ldr   r0,=GPIOA_BASE
        ldr   r1, =(1<<14)|(1<<23)
    str   r1,[r0]
    str   r1,[r0,#PIO_OER]
    str   r1,[r0,#PIO_CODR]
    mov   r1,#(1<<15)
    ldr   r0,=WDT
    str   r1,[r0]

@set_clock
        ldr   r0, =PMC_BASE
        ldr   r1, =(0x20<<16)|(0x3f<<|(0x20000000)|0x3
        str   r1, [r0,#CKGR_PLLAR]

L1:
        ldr   r1, [r0,#PMC_SR]
        tst   r1, #0x2
        beq   L1

        ldr   r1, =0x102
        str   r1, [r0,#PMC_MCKR]

L2:
        ldr   r1, [r0,#PMC_SR]
        tst   r1, #0x8
        beq   L2

@init_uart
        ldr   r0, =GPIOA_BASE
        ldr   r1, =(1<<9)|(1<<10)
        str   r1, [r0,#PIO_PDR]

@peripheral a
        str   r1, [r0,#PIO_ASR]

@interrupt disable
        ldr   r0, =DBUG_BASE
        mvn   r1, #0
        str   r1, [r0,#DBGU_IDR]

@Debug Unit Control Register
        mov   r1, #0x15c
        str   r1, [r0]

@Baud rate
        mov   r1, #55
        str   r1, [r0,#DBGU_BRGR]

        mov   r1, #0x800
        str   r1, [r0,#DBGU_MR]

L3:
        ldr   r1,[r0,#DBGU_SR]
        tst   r1,#0x2
        beq   L3
        mov   r1,#97
        str   r1,[r0,#DBGU_THR]
        b   L3
       
Hang:
        b Hang

论坛徽章:
0
15 [报告]
发表于 2009-09-25 19:11 |只看该作者
#include"atmel.h"

.global GTopHalfEntry
.global Hang

GTopHalfEntry:
        ldr   pc,vect_reset
    ldr   pc, vect_undef
    ldr   pc, vect_swi
    ldr   pc, vect_iabort
    ldr   pc, vect_dabort
    .word 512
    ldr   pc, vect_irq
    ldr   pc, vect_fiq

vect_reset:
    .word handle_reset
vect_undef:
    .word handle_undef
vect_swi:
    .word handle_swi
vect_iabort:
    .word handle_iabort
vect_dabort:
    .word handle_dabort
vect_irq:
    .word handle_irq
vect_fiq:
    .word handle_fiq

handle_fiq:
handle_irq:
handle_dabort:
handle_iabort:
handle_swi:
handle_undef:
handle_reset:
    msr   cpsr, #((ARM_MODE_SVC) | (ARM_INT_MASK))

@LED
    ldr   r0, =GPIOA_BASE
    ldr   r1, =(1<<14)|(1<<23)
    str   r1, [r0]
    str   r1, [r0,#PIO_OER]
    str   r1, [r0,#PIO_CODR]
    mov   r1, #(1<<15)
    ldr   r0, =WDT
    str   r1, [r0]

@set_clock
        ldr   r0, =PMC_BASE
        ldr   r1, =(0x20<<16)|(0x3f<<|(0x20000000)|0x3
        str   r1, [r0,#CKGR_PLLAR]

L1:
        ldr   r1, [r0,#PMC_SR]
        tst   r1, #0x2
        beq   L1

        ldr   r1, =0x102
        str   r1, [r0,#PMC_MCKR]

L2:
        ldr   r1, [r0,#PMC_SR]
        tst   r1, #0x8
        beq   L2

@init_uart
        ldr   r0, =GPIOA_BASE
        ldr   r1, =(1<<9)|(1<<10)
        str   r1, [r0,#PIO_PDR]

@peripheral a
        str   r1, [r0,#PIO_ASR]

@interrupt disable
        ldr   r0, =DBUG_BASE
        mvn   r1, #0
        str   r1, [r0,#DBGU_IDR]

@Debug Unit Control Register
        mov   r1, #0x15c
        str   r1, [r0]

@Baud rate
        mov   r1, #55
        str   r1, [r0,#DBGU_BRGR]

        mov   r1, #0x800
        str   r1, [r0,#DBGU_MR]

L3:
        ldr   r1, [r0,#DBGU_SR]
        tst   r1, #0x2
        beq   L3
        mov   r1, #97
        str   r1, [r0,#DBGU_THR]
        b     L3
       
Hang:
        b Hang

论坛徽章:
0
16 [报告]
发表于 2009-09-25 19:39 |只看该作者

  1.   1 #include"atmel.h"
  2.   2
  3.   3 .global GTopHalfEntry
  4.   4 .global Hang
  5. ~~~~~~~~~~~~~~ why global?

  6.   5
  7.   6 GTopHalfEntry:
  8.   7         ldr   pc,vect_reset
  9.   8     ldr   pc, vect_undef
  10.   9     ldr   pc, vect_swi
  11. 10     ldr   pc, vect_iabort
  12. 11     ldr   pc, vect_dabort
  13. 12     .word 512
  14. 13     ldr   pc, vect_irq
  15. 14     ldr   pc, vect_fiq
  16. 15
  17. 16 vect_reset:
  18. 17     .word handle_reset
  19. 18 vect_undef:
  20. 19     .word handle_undef
  21. 20 vect_swi:
  22. 21     .word handle_swi
  23. 22 vect_iabort:
  24. 23     .word handle_iabort
  25. 24 vect_dabort:
  26. 25     .word handle_dabort
  27. 26 vect_irq:
  28. 27     .word handle_irq
  29. 28 vect_fiq:
  30. 29     .word handle_fiq
  31. 30
  32. 31 handle_fiq:
  33. 32 handle_irq:
  34. 33 handle_dabort:
  35. 34 handle_iabort:
  36. 35 handle_swi:
  37. 36 handle_undef:
  38. ~~~~~~~~~~~~~ no exception handler needed in a simple case.


  39. 37 handle_reset:
  40. 38     msr   cpsr, #((ARM_MODE_SVC) | (ARM_INT_MASK))
  41. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ msr   cpsr, #(ARM_MODE_SVC | ARM_INT_MASK)

  42. 39 @LED
  43. 40     ldr   r0, =GPIOA_BASE
  44. 41     ldr   r1, =(1<<14)|(1<<23)
  45. 42     str   r1, [r0]
  46. ~~~~~~~~~~~~~~ "str  r1, [r0, #PIO_PER]" is prefer

  47. 43     str   r1, [r0,#PIO_OER]
  48. 44     str   r1, [r0,#PIO_CODR]
  49. 45     mov   r1, #(1<<15)
  50. 46     ldr   r0, =WDT
  51. 47     str   r1, [r0]
  52. ~~~~~~~~~~~~~~ str  r1, [r0, #xxxx]

  53. 48 @set_clock
  54. 49         ldr   r0, =PMC_BASE
  55. 50         ldr   r1, =(0x20<<16)|(0x3f<<8)|(0x20000000)|0x3
  56. 51         str   r1, [r0,#CKGR_PLLAR]
  57. 52 L1:     
  58. 53         ldr   r1, [r0,#PMC_SR]
  59. 54         tst   r1, #0x2
  60. 55         beq   L1
  61. 56         ldr   r1, =0x102
  62. 57         str   r1, [r0,#PMC_MCKR]
  63. 58         
  64. 59 L2:     
  65. 60         ldr   r1, [r0,#PMC_SR]
  66. 61         tst   r1, #0x8
  67. 62         beq   L2
  68. 63 @init_uart
  69. 64         ldr   r0, =GPIOA_BASE
  70. 65         ldr   r1, =(1<<9)|(1<<10)
  71. ~~~~~~~~~~~~~~~~~ mov r1, #((1 << 10) | (1 << 9))

  72. 66         str   r1, [r0,#PIO_PDR]
  73. 67 @peripheral a
  74. 68         str   r1, [r0,#PIO_ASR]
  75. 69 @interrupt disable
  76. 70         ldr   r0, =DBUG_BASE
  77. 71         mvn   r1, #0
  78. 72         str   r1, [r0,#DBGU_IDR]
  79. 73 @Debug Unit Control Register
  80. 74         mov   r1, #0x15c
  81. 75         str   r1, [r0]
  82. 76 @Baud rate
  83. 77         mov   r1, #55
  84. ~~~~~~~~~~~~~~~~ DO NOT use any magic number!

  85. 78         str   r1, [r0,#DBGU_BRGR]
  86. 79         mov   r1, #0x800
  87. 80         str   r1, [r0,#DBGU_MR]
  88. 81 L3:     
  89. 82         ldr   r1, [r0,#DBGU_SR]
  90. 83         tst   r1, #0x2
  91. 84         beq   L3
  92. 85         mov   r1, #97
  93. ~~~~~~~~~~~~~~~ mov r1, #'a'

  94. 86         str   r1, [r0,#DBGU_THR]
  95. ~~~~~~~~~~~~~~~~~~~~~~~ use "strb" instead!
  96. 87         b     L3
  97. 88 Hang:   
  98. 89         b Hang
复制代码

论坛徽章:
0
17 [报告]
发表于 2009-09-28 09:12 |只看该作者

关于romboot的问题

纠正一下楼主的问题!

楼主是不是新用AT91SAM926X啊?这个片子默认启动就先打印如下
//*************以下****************
RomBOOT
>
**************以上***************//

波特率为115200-8-N-1
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP