交叉编译+Jlink下载程序到SDRAM中运行

来源:互联网 发布:老子三章天下皆知 编辑:程序博客网 时间:2024/05/21 10:12

   现在的电脑都很少有并口啦,所以只能通过jlink来烧写了。

   在程序的开发调试阶段可以把程序直接烧写到SDRAM中,然后直接运行就行了,不需要烧写到flash中。可以通过jlink cmd来实现。

   参考了下面网址上的内容:

   http://blog.csdn.net/yanghao23/article/details/7689534



   在ubuntu虚拟机上安装了交叉编译器:arm-linux-gcc-3.4.5-glibc-2.3.6

    然后用它来编译一个简单的点灯程序:

   @******************************************************************************
  2 @ File:led_on.S           
  3 @ 功能:LED点灯程序,点亮LED1
  4 @******************************************************************************       
  5                            
  6 .text
  7 .global _start
  8 _start:                    
  9             LDR     R0,=0x56000010      @ R0设为GPBCON寄存器。此寄存器
 10                                         @ 用于选择端口B各引脚的功能:   
 11                                         @ 是输出、是输入、还是其他      
 12             MOV     R1,#0x00000400                                      
 13             STR     R1,[R0]             @ 设置GPB5为输出口, 位[10:9]=0b01
 14             LDR     R0,=0x56000014      @ R0设为GPBDAT寄存器。此寄存器  
 15                                         @ 用于读/写端口B各引脚的数据    
 16             MOV     R1,#0x00000000      @ 此值改为0x00000020,           
 17                                         @ 可让LED1熄灭
 18             STR     R1,[R0]             @ GPB5输出0,LED1点亮           
 19 MAIN_LOOP:
 20             B       MAIN_LOOP


Makfile:

  1 led_on.bin : led_on.S      
  2     arm-linux-gcc -g -c -o led_on.o led_on.S
  3     arm-linux-ld -Ttext 0x0000000 -g led_on.o -o led_on_elf
  4     arm-linux-objcopy -O binary -S led_on_elf led_on.bin
  5 clean:
  6     rm -f   led_on.bin led_on_elf *.o
 

  第3行 -Ttext 0x00000000 指定代码段的起始地址是0x00000000

   编译后生成led_on.bin。         

  接下来就是烧写led_on.bin到开发板的SDRAM中了。

   要用到SDRAM,首先要初始化SDRAM了,所以先下载一个初始化SDRAM的程序到2440的内部SRAM上(这个就是单片机的RAM,直接可用)。SDRAM初始化程序2440init.bin的下载地址是:            http://download.csdn.net/download/yanghao23/4391863

    使用jlink commands下载只涉及到:r loadbin setpc g h 。这些命令的意思参考下面网站:

   http://blog.csdn.net/liushaowei2008/article/details/7721511

     烧写之前要把启动方式拨到NAND方式,使片内SRAM映射到nGcs0.

    


  r
loadbin d:\2440init.bin 0        
setpc 0   
g  

   然后就是下载自己要运行的程序了:


  h

  loadbin \\192.168.10.150\gt2440\hardware\led_on\led_on.bin 0x30000000  

 setpc 0x30000000

  g


  0x30000000是开发板上SDRAM的起始地址


        






0 0