ads+jlink和keil+jlink调试环境配置

来源:互联网 发布:古风额饰淘宝 编辑:程序博客网 时间:2024/06/05 19:58
/***********************************************************************************************************************************************************************/
ads1.2 and jlinkv8
1.安装ads1.2和jlink驱动Setup_JLinkARM_V408i.exe
安装ads1.2时,最后在100%时如果持续时间长,耐心等一下吧。
没有等待而点了cancel,则之后就不好重装了。解决办法见
http://blog.ednchina.com/mengforever1981/216162/message.aspx
2.将线连好:pc的usb口连到jlink的usb口,jlink的jtag口连到板子的jtag口。由于我的jlink的jtag口20pin而板子jtag口10pin,所以中间用一个转接小板转接了一下
将板子的flash开关在nor或nand均可,将板子上电,在开始里打开jlink gdb server,应该会出现下图,恩,jlink没坏

3.确保TQ2440_Test工程的路径中不存在中文,http://download.csdn.net/detail/songqqnew/3636198
在TQ2440_Test中双击TQ2440_Test.mcp,出现

点击debug,弹出axd窗口如下,(貌似还弹出了load session的窗口,关闭了就行)

4.在axd中点击configure target

弹出下图

add 一个文件JLinkRDI.dll,默认在C:\Program Files\SEGGER\JLinkARM_V408i,添加后如下图

然后点configure,然后在弹出的窗口中点确定,然后点OK

5.在axd中点击configure interface,弹出串口,在session file标签页配置script脚本文件init_sdram.txt,路径中不要中文

init_sdram.txt内容如下
[cpp] view plaincopy
  1. Setmem  0x53000000 0x00000000  32  
  2. Setmem  0x4A000008 0xFFFFFFFF  32  
  3. Setmem  0x4A00001C 0x000007FF  32  
  4. Setmem  0x53000000 0x00000000  32  
  5. Setmem  0x56000050 0x000055AA  32  
  6. Setmem  0x4C000014 0x00000007  32  
  7. Setmem  0x4C000000 0x00FFFFFF  32  
  8. Setmem  0x4C000004 0x00061012  32  
  9. Setmem  0x4C000008 0x00040042  32  
  10. Setmem  0x48000000 0x22111120  32  
  11. Setmem  0x48000004 0x00002F50  32  
  12. Setmem  0x48000008 0x00000700  32  
  13. Setmem  0x4800000C 0x00000700  32  
  14. Setmem  0x48000010 0x00000700  32  
  15. Setmem  0x48000014 0x00000700  32  
  16. Setmem  0x48000018 0x0007FFFC  32  
  17. Setmem  0x4800001C 0x00018005  32  
  18. Setmem  0x48000020 0x00018005  32  
  19. Setmem  0x48000024 0x008E0459  32  
  20. Setmem  0x48000028 0x00000032  32  
  21. Setmem  0x4800002C 0x00000030  32  
  22. Setmem  0x48000030 0x00000030  32  
然后确定,然后关闭axd,

6.然后在ads中再次点击debug,如果此时弹出的画面是如下,就再次执行一下第 4 5步,貌似因为之前的配置没被保存


7.然后在ads中再次点击debug,如果此次弹出的画面如下,即要求定位到2440init.s文件,那就找到到ads工程源码中的这个文件,点击打开


点击打开之后,应该就可以出现以下窗口
接下来点击go或按F5 等调试就可以了

在操作过程中,点击debug后如果又出现一些问题,那么就执行一下configure interface或configure target


/***********************************************************************************************************************************************************************/
keil4 and jlinkv8
1.安装keil4 和jlink驱动Setup_JLinkARM_V408i.exe
2.打开keil4,新建一个工程,名为test

3.在接下来的框中选择samsung的s3c2440a芯片,如下

4.在接下来的框中选择是,使用官方启动脚本,如下

5.配置板子


target:


debug:

Ext_RAM.ini是手动在工程目录建立的文件,其内容如下
[cpp] view plaincopy
  1. /******************************************************************************/  
  2. /* Ext_RAM.INI: External RAM (SDRAM) Initialization File                      */  
  3. /******************************************************************************/  
  4. // <<< Use Configuration Wizard in Context Menu >>>                           //   
  5. /******************************************************************************/  
  6. /* This file is part of the uVision/ARM development tools.                    */  
  7. /* Copyright (c) 2005-2008 Keil Software. All rights reserved.                */  
  8. /* This software may only be used under the terms of a valid, current,        */  
  9. /* end user licence from KEIL for a compatible version of KEIL software       */  
  10. /* development tools. Nothing else gives you the right to use this software.  */  
  11. /******************************************************************************/  
  12.   
  13.   
  14. FUNC void SetupForStart (void) {  
  15.   
  16. // <o> Program Entry Point  
  17.   PC = 0x30000000;  
  18. }  
  19.   
  20.   
  21. FUNC void Init (void) {  
  22.   
  23.   _WDWORD(0x4A000008, 0xFFFFFFFF);      // Disable All Interrupts  
  24.   
  25.   _WDWORD(0x53000000, 0x00000000);      // Disable Watchdog Timer  
  26.     
  27.                                         // Clock Setup   
  28.                                         // FCLK = 300 MHz, HCLK = 100 MHz, PCLK = 50 MHz  
  29.   _WDWORD(0x4C000000, 0x0FFF0FFF);      // LOCKTIME  
  30.   _WDWORD(0x4C000014, 0x0000000F);      // CLKDIVN  
  31.   _WDWORD(0x4C000004, 0x00043011);      // MPLLCON  
  32.   _WDWORD(0x4C000008, 0x00038021);      // UPLLCON  
  33.   _WDWORD(0x4C00000C, 0x001FFFF0);      // CLKCON  
  34.   
  35.                                         // Memory Controller Setup for SDRAM  
  36.   _WDWORD(0x48000000, 0x22000000);      // BWSCON  
  37.   _WDWORD(0x4800001C, 0x00018005);      // BANKCON6  
  38.   _WDWORD(0x48000020, 0x00018005);      // BANKCON7  
  39.   _WDWORD(0x48000024, 0x008404F3);      // REFRESH  
  40.   _WDWORD(0x48000028, 0x00000032);      // BANKSIZE  
  41.   _WDWORD(0x4800002C, 0x00000020);      // MRSRB6  
  42.   _WDWORD(0x48000030, 0x00000020);      // MRSRB7  
  43.   
  44.   _WDWORD(0x56000000, 0x000003FF);      // GPACON: Enable Address lines for SDRAM  
  45. }  
  46.   
  47.   
  48. // Reset chip with watchdog, because nRST line is routed on hardware in a way   
  49. // that it can not be pulled low with ULINK  
  50.   
  51. _WDWORD(0x40000000, 0xEAFFFFFE);        // Load RAM addr 0 with branch to itself  
  52. CPSR = 0x000000D3;                      // Disable interrupts  
  53. PC   = 0x40000000;                      // Position PC to start of RAM  
  54. _WDWORD(0x53000000, 0x00000021);        // Enable Watchdog  
  55. g, 0                                    // Wait for Watchdog to reset chip  
  56.   
  57. Init();                                 // Initialize memory  
  58. LOAD .\test.axf INCREMENTAL         // Download program  
  59. SetupForStart();                        // Setup for Running  
  60. g, main                                 // Goto Main  
上面倒数第三行是需要改动的,在本例中是test.axf。一般为工程名.axf。编译输出窗口也有指示,如下。

另外,此文件还规定了pc的开始指向,在debug图中点击ext_ram.ini右侧的edit,如下

可以编辑此文件,有两种编辑方式:文本和图形。如下

可见设置pc要指向0x30000000,即代码段的起始地址。而代码段区域是在target标签页设定,见上面target图(即read only memory area,但也放在了sdram中)

utilities:


6.选择file/new,新建一个文件,并保存为main.c

并将此文件加入工程中,如下


7.编辑main.c,输入如下测试代码
[cpp] view plaincopy
  1. #include<s3c2440.h>  
  2. void delay(int x)  
  3. {       int i = 0;  
  4.         while(x--){  
  5.                 for(i=0;i<5000;i++){  
  6.                         ;  
  7.                     }  
  8.             }        
  9. }     
  10. int main()  
  11. {  
  12.     while(1)  
  13.     {     
  14.     GPBCON|=(1<<2*5);//GPB5 LED1,0 on  
  15.     GPBCON&=~(1<<11);  
  16.     GPBDAT&=~(1<<5);//light on  
  17.     delay(100);  
  18.     GPBDAT|=(1<<1*5);//light off  
  19.     delay(100);  
  20.   
  21.     GPBCON|=(1<<2*6);//GPB6 LED2  
  22.     GPBCON&=~(1<<13);  
  23.     GPBDAT&=~(1<<6);  
  24.     delay(100);  
  25.     GPBDAT|=(1<<1*6);  
  26.     delay(100);    
  27.   
  28.     GPBCON|=(1<<2*7);//GPB7 LED3  
  29.     GPBCON&=~(1<<15);  
  30.     GPBDAT&=~(1<<7);  
  31.     delay(100);  
  32.     GPBDAT|=(1<<1*7);  
  33.     delay(100);  
  34.   
  35.     GPBCON|=(1<<2*8);//GPB8 LED4  
  36.     GPBCON&=~(1<<17);  
  37.     GPBDAT&=~(1<<8);  
  38.     delay(100);  
  39.     GPBDAT|=(1<<1*8);  
  40.     delay(100);  
  41.   
  42.        GPBCON|=(1<<2*0);//GPB0 BUZZER, 1 on  
  43.        GPBCON&=~(1<<1);  
  44.        GPBDAT|=(1<<1*0);  
  45.        delay(100);  
  46.        GPBDAT&=~(1<<0);  
  47.        delay(100);      
  48.                 
  49.     }   
  50.           
  51. }  
按下ctrl + F5开始调试-------开关拨到nand测
refer to http://www.360doc.com/content/11/0620/14/99105_128216053.shtml

一些位操作

某位置1,其余位不变:如置GPBCON第10位1,其余不变 (从第0位开始算起)
GPBCON |= (1<<10);
某连续几位置1,其余位不变:如置GPBCON第10,11位1,其余不变
GPBCON |= (3<<10);

如果置bit0,可以GPBCON |=1;
GPBCON |= ~0 ; 或直接 GPBCON= 0xFFFFFFFF;//这样不太好不如 GPBCON|= ~0


某位清0,其余位不变:如清GPBCON第10位0,其余不变(从第0位开始算起)
GPBCON &= ~(1<<10);
某连续几位清0,其余位不变:如清GPBCON第10,11位0,其余不变
GPBCON &= ~(3<<10);

GPBCON &= ~1;
所有位清零 GPBCON&=0 ; 或直接 GPBCON=0;

同时某位清零和置1,而其他位不变
如置GPBCON第10位为1,清GPBCON第11位为0,置GPBCON第12位为1
GPBCON =GPBCON |(1<<10)& (~(1<<11)) |(1<<12);
也可以
GPBCON|= 0x05<<10;//或许不能保证第11位清零(如果原来第11位=1,执行后仍为1)

从位组合数据,8位
data=0;//组合之前先清零
for(i=0;i<8;i++){
data<<1;
data |= bit_value;
}


读取中间某几位
如 val = rCLKDIVN;
    m = (val>>1)&3;//读取bit2 bit1到m
    switch (m) {
    case 0:
        HCLK = FCLK;
        break;
    case 1:
        HCLK = FCLK>>1;
        break;
    case 2:
        if(s&2)
            HCLK = FCLK>>3;
        else
            HCLK = FCLK>>2;
        break;
    case 3:
        if(s&1)
            HCLK = FCLK/6;
        else
            HCLK = FCLK/3;
        break;
    }



    keil c中嵌入汇编--c51
1.在c代码中加入汇编标志,比如
main()
{    InitAll();
    #pragma ASM
    SETB P3.5                                   //buzzer on
    NOP
    #pragma ENDASM

    ctrlprocess();
}
2.设置一下
在 Project 窗口中包含汇编代码的 C 文件上右键,选择“Options for ...”,点击右边的“Generate Assembler SRC File”和“Assemble SRC File”,使检查框由灰色变成黑色(有效)状态;如下



    keil c中嵌入汇编--arm
按照如下方式直接加入代码即可
__asm
{
mov r0,#1
mov r1,#0x56000014   //buzzer on
strb r0 ,[r1]
}        
复杂一点的例子参考
http://bbs.mcu123.net/bbs/archiver/tid-7777.html

原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 狗狗眼睛变蓝色怎么办 脸被太阳晒伤了怎么办 皮肤晒伤红肿痒怎么办 3岁儿童频繁眨眼怎么办 狗狗的眼睛红肿怎么办 脸过敏发红怎么办不痒 上眼皮红肿痒是怎么办 眼睛痒了几天了怎么办 眼睛肿了还痒怎么办 孩子脸上有红血丝怎么办 脸上长了红血丝怎么办 指甲受创出血了怎么办 手指被挤压紫了怎么办 眼睛撞了有淤血怎么办 下眼底有小白点怎么办 狗的白眼球充血怎么办 眼球有出血点是怎么办 吃阿胶上火了该怎么办 胎儿胼胝体发育不良怎么办 鸡眼看到硬芯了怎么办 小脚趾起茧子疼怎么办 脚起老茧很痛怎么办 化疗后骨髓抑制严重怎么办 胃炎引起的胃胀怎么办 胃病胀肚子很鼓怎么办 小孩淋巴结发炎肚子疼痛怎么办 顺产后子宫脱垂怎么办 顺产完子宫脱垂怎么办 额头长了个鱼鳞怎么办 脸上长了很多痣怎么办 做过狐臭的疤痕怎么办 痤疮留下的红印怎么办 脸上疤掉了黑印怎么办 脸上有黑色的疤怎么办 一只眼睛外斜视怎么办 残币银行不给换怎么办 手上有多套房的怎么办 长了两层脚指甲怎么办 指甲长了两层怎么办 脚趾甲长了两层怎么办 产妇气血虚没奶怎么办