搜索
bottom↓
回复: 12

ARM notes: (Based On TQ2440)--- 菜菜鸟裸奔年代(1) MDK下点亮LED

[复制链接]

出0入0汤圆

发表于 2010-10-18 19:57:20 | 显示全部楼层 |阅读模式
对汇编有点了解后开始点灯,  应该在用中学才是最快的.  不管如何首先想办法点灯.   

============================================================================================================================================


       用Jlink,用 MDK 4 . 其中某个配置页面如下:   

配置Jlink    (原文件名:Note2-1.jpg)

============================================================================================================================================
     


   配置完成后开始我们的程序编写. 程序如何编写暂时还不会, 上网下载了一份 , 看了看, 关键是启动代码(汇编代码). 但是想想:
   
   如果我自己写的话,就是需要关闭看门狗, 然后让PC指向main函数.  
   
   稍微看了下keil自带的启动代码, 但是有部分我不明白,我将认为没有用的一部分delete了, 这样做是想让代码看起来稍微简洁点.

   下面是工程文件.

MDK Project ourdev_590856KBWMT2.zip(文件大小:48K) (原文件名:Note2_Led.zip)

=======================================================================
;   看看启动代码:

Mode_USR        EQU     0x10
Mode_FIQ        EQU     0x11
Mode_IRQ        EQU     0x12
Mode_SVC        EQU     0x13
Mode_ABT        EQU     0x17
Mode_UND        EQU     0x1B
Mode_SYS        EQU     0x1F

I_Bit           EQU     0x80            ; when I bit is set, IRQ is disabled
F_Bit           EQU     0x40            ; when F bit is set, FIQ is disabled


;----------------------- Stack and Heap Definitions ----------------------------

UND_Stack_Size  EQU     0x00000000
SVC_Stack_Size  EQU     0x00000008
ABT_Stack_Size  EQU     0x00000000
FIQ_Stack_Size  EQU     0x00000000
IRQ_Stack_Size  EQU     0x00000080
USR_Stack_Size  EQU     0x00000400

ISR_Stack_Size  EQU     (UND_Stack_Size + SVC_Stack_Size + ABT_Stack_Size + \
                         FIQ_Stack_Size + IRQ_Stack_Size)

                AREA    STACK, NOINIT, READWRITE, ALIGN=3

Stack_Mem       SPACE   USR_Stack_Size
__initial_sp    SPACE   ISR_Stack_Size
Stack_Top       EQU     Stack_Mem + ISR_Stack_Size




Heap_Size       EQU     0x00000000

                AREA    HEAP, NOINIT, READWRITE, ALIGN=3
;__heap_base
Heap_Mem        SPACE   Heap_Size
__heap_limit


;----------------------- Memory Definitions ------------------------------------

; Internal Memory Base Addresses
IRAM_BASE       EQU     0x40000000


;----------------------- Watchdog Timer Definitions ----------------------------

WT_BASE         EQU     0x53000000      ; Watchdog Timer Base Address
WTCON_OFS       EQU     0x00            ; Watchdog Timer Control Register Offset
WTDAT_OFS       EQU     0x04            ; Watchdog Timer Data Register    Offset
WTCNT_OFS       EQU     0x08            ; Watchdog Timer Count Register   Offset


WT_SETUP        EQU     1
WTCON_Val       EQU     0x00000000
WTDAT_Val       EQU     0x00008000



;----------------------- I/O Port Definitions ----------------------------------

;----------------------- CODE --------------------------------------------------

                PRESERVE8
               

; Area Definition and Entry Point
;  Startup Code must be linked first at Address at which it expects to run.

                AREA    RESET, CODE, READONLY
                ARM

                IF      :LNOT::DEF:__EVAL
                IMPORT  ||Image$$ER_ROM1$$RO$$Length||
                IMPORT  ||Image$$RW_RAM1$$RW$$Length||
                ENDIF

; Exception Vectors
;  Mapped to Address 0.
;  Absolute addressing mode must be used.
;  Dummy Handlers are implemented as infinite loops which can be modified.
;RESET
Vectors         LDR     PC, Reset_Addr         
                LDR     PC, Undef_Addr
                LDR     PC, SWI_Addr
                LDR     PC, PAbt_Addr
                LDR     PC, DAbt_Addr
                IF      :DEF:__EVAL
                  DCD   0x4000
                ELSE
                  DCD   ||Image$$ER_ROM1$$RO$$Length||+\
                        ||Image$$RW_RAM1$$RW$$Length||
                ENDIF
                LDR     PC, IRQ_Addr
                LDR     PC, FIQ_Addr

                IF      :DEF:__RTX
                IMPORT  SWI_Handler
                IMPORT  IRQ_Handler_RTX
                ENDIF


Reset_Addr      DCD     Reset_Handler
Undef_Addr      DCD     Undef_Handler
SWI_Addr        DCD     SWI_Handler
PAbt_Addr       DCD     PAbt_Handler
DAbt_Addr       DCD     DAbt_Handler
                DCD     0                   ; Reserved Address
                IF      :DEF:__RTX
IRQ_Addr        DCD     IRQ_Handler_RTX
                ELSE
IRQ_Addr        DCD     IRQ_Handler
                ENDIF
FIQ_Addr        DCD     FIQ_Handler

Undef_Handler   B       Undef_Handler
                IF      :DEF:__RTX
                ELSE
SWI_Handler     B       SWI_Handler
                ENDIF
PAbt_Handler    B       PAbt_Handler
DAbt_Handler    B       DAbt_Handler
IRQ_Handler     PROC
                EXPORT  IRQ_Handler               [WEAK]
                B       .
                ENDP
FIQ_Handler     B       FIQ_Handler


; Reset Handler

                EXPORT  Reset_Handler
Reset_Handler   


; Watchdog Setup ---------------------------------------------------------------

                IF      WT_SETUP != 0
                LDR     R0, =WT_BASE
                LDR     R1, =WTCON_Val
                LDR     R2, =WTDAT_Val
                STR     R2, [R0, #WTCNT_OFS]
                STR     R2, [R0, #WTDAT_OFS]
                STR     R1, [R0, #WTCON_OFS]
                ENDIF
               

; Clock Setup ------------------------------------------------------------------
            
; Memory Controller Setup ------------------------------------------------------
                           
; I/O Pins Setup ---------------------------------------------------------------
                                             
; Copy Exception Vectors to Internal RAM ---------------------------------------

; Enter the C code -------------------------------------------------------------

                IMPORT  main
                LDR     R0, =main
                BX      R0


                IF      :DEF:__MICROLIB

                EXPORT  __heap_base
                EXPORT  __heap_limit

                ELSE
; User Initial Stack & Heap
                AREA    |.text|, CODE, READONLY

                IMPORT  __use_two_region_memory
                EXPORT  __user_initial_stackheap
__user_initial_stackheap

                LDR     R0, =  Heap_Mem
                LDR     R1, =(Stack_Mem + USR_Stack_Size)
                LDR     R2, = (Heap_Mem +      Heap_Size)
                LDR     R3, = Stack_Mem
                BX      LR
                ENDIF

                END
;==============================================================================





=======================================================================================================================
=======================================================================================================================
上面的代码中.有许多东西是我不想要的,于是继续将除了设置看门狗和跳转到main这两个功能的代码外全部删除:


只有设置Watchdog和跳转到main的StartCode (原文件名:startCode.jpg)

这样看起来够简洁了,而且这些刚好也是我能看懂的

下面是工程:
点击此处下载 ourdev_590860ZOXDCA.zip(文件大小:50K) (原文件名:Note2_Led简单startcode.zip)

=======================================================================================================================
=======================================================================================================================

下面的是c文件的:

(原文件名:maincode.jpg)

这个看起来和以前玩过的C51 AVR 以及XS128似乎没有什么太大的不同.
以后写代码就准备在这里一点点的添加了.

阿莫论坛20周年了!感谢大家的支持与爱护!!

曾经有一段真挚的爱情摆在我的面前,我没有珍惜,现在想起来,还好我没有珍惜……

出0入0汤圆

发表于 2010-10-18 20:18:21 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-10-18 20:19:57 | 显示全部楼层
mark

出0入25汤圆

发表于 2011-1-28 17:57:29 | 显示全部楼层
Mark

出0入0汤圆

发表于 2011-2-1 23:27:53 | 显示全部楼层
MARK

出0入0汤圆

发表于 2011-6-10 00:17:30 | 显示全部楼层
LZ有没有QQ一起学习,讨论,我也刚学
QQ:57706999

出0入0汤圆

发表于 2011-6-10 09:23:01 | 显示全部楼层
楼主好强啊,我最近也刚开始玩STM32

出0入0汤圆

发表于 2011-6-10 09:29:57 | 显示全部楼层
哈哈我也是TQ2440  不过是7寸屏的  一起学习啦

出0入0汤圆

发表于 2011-6-17 16:52:57 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-6-17 16:53:14 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-6-17 16:53:36 | 显示全部楼层
mark

出0入0汤圆

发表于 2012-10-19 13:38:40 | 显示全部楼层
好贴 一起学习 刚入手

出0入0汤圆

发表于 2013-6-12 01:48:24 | 显示全部楼层
我配置了,还是下载不进去
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片。注意:要连续压缩2次才能满足要求!!】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-8-26 03:20

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

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