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

/***********************************************************************************************************************************************************************/
ads1.2 and jlinkv8
1.安装ads1.2和jlink驱动Setup_JLinkARM_V408i.exe

安装ads1.2时,最后在100%时如果持续时间长,耐心等一下吧。

如果你在WIN7 X64下安装ADS就会有,

Warning : L6301W:Could not find file C:\Program Files .

Error : L6218 : Undefined symbol .......

好像库都找不到了。

问题就出在Program Files (x86)那个括号上。ADS是1997年的产品,对本地化支持不好。

这种情况只会出现在WIN7 X64的系统下,x32下没有Program Files (x86)的目录,不会有这样的问题。

所以ADS的所有访问的路径,不能有文中或特殊符号。

解决方法:你把ADS安装在C根目录下就可以。比如:C:\ARM\ADSv1_2。


2.将线连好:pc的usb口连到jlink的usb口,jlink的jtag口连到板子的jtag口。由于我的jlink的jtag口20pin而板子jtag口10pin,所以中间用一个转接小板转接了一下
将板子的flash开关在nor或nand均可,将板子上电,在开始里打开jlink gdb server,应该会出现下图,恩,jlink没坏

3.确保TQ2440_Test工程的路径中不存在中文
在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 plain copy
  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 plain copy
  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 plain copy
  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测
一些位操作

某位置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]

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值