使用JLink间接烧写s3c6410 nand_flash的方法

s3c6410对nand_flash的烧写功能,有些公司已经提供了SD卡的方法。但是我们也可以使用JLink把我们的uboot等程序以下面的方式烧写到我们的nand_flash上  硬件环境:JLink V8、三星s3c6410板软件环境:xp3、JLink4.12驱动、ADS1.2 原理:针对s3c6410,nand flash启动时,系统会把nand flash前4KB的内
摘要由CSDN通过智能技术生成

s3c6410对nand_flash的烧写功能,有些公司已经提供了SD卡的方法。但是我们也可以使用JLink把我们的uboot等程序以下面的方式烧写到我们的nand_flash上 

 

硬件环境:JLink V8、三星s3c6410板

软件环境:xp3、JLink4.12驱动、ADS1.2

 

原理:针对s3c6410,nand flash启动时,系统会把nand flash前4KB的内容自动下载到0xc000000(steppingstone)中运行,我们可以利用

这个特性,来做一些事情,把大的程序烧写到nand flash的0x0地址,这样,在重新启动之后,就会自动运行我们的大程序了。但是这里我们

还忽略了一些细节。细心的读者发现,系统只会把nand flash的地址前4K下载到0xc000000运行,那么大程序如何完全放到内存中运行呢?

如果你玩过uboot的代码搬运的话,那就不是难事了。

          s3c6410的0xc000000地址做为steppingstone在nand_flash启动的时候,这段空间是可读可写的。因此我们可以使用JLINK连接板子,并通过JLINK的下载功能,把PC机上的程序写到板子的内存中,通过JLINK的loadbin命令。

         1.利用JLINK,烧写能够初始化s3c6410内存的代码到0xc000000,使得内存能够使用

         2.利用JLINK,烧写对nand有读写能力并可提供命令处理的程序到内存(没有第一步的初始化内存,我们无法下载程序到内存)

         3.烧写我们的第二步的代码到nand flash的0地址,这样在重新启动后,我们的第二步代码就会被下载到0xc000000地址,并运行,

            我们可以利用第二步代码所提供的命令来烧写我们其他的程序。第二步的代码往往是引导程序,例如uboot。

 

学前预备:

1. 对arm体系结构有一定认识,看过s3c6410的datasheet,最起码看过memory map这一章节

2. 会使用ADS1.2 IDE开发工具

3. 会使用JLink工具

 

步骤:

1.JLink和你的板子连接(别告诉我不会,我截图能力有限

   JLink一端通过JTAG口连接到板子上(具体连接方式还要看硬件连线,不过一般都是这样了,我用的转接板),另一端是USB口连接到你的主机上;

 

2.运行JLink

   如果第一步连接正确,启动后将显示以下界面,如果没有检测到CPU,命令行使用usb命令连接板子,r命令识别CPU,正确识别如下所示:



 

 

 

 

 

 

 

 

 

 

 

 

 

 

3.下载程序(nand_flash启动方式)

   1)loadbin c:\init.bin 0xc000000

   2)setpc 0xc000000

   3)g

   4)h

   5)loadbin c:\boot.bin 0x57e00000

   6)setpc 0x57e00000

   7)g

   解释:loadbin c:\sdram_init.bin 0xc000000,loadbin为JLink内置命令,命令的含义是加载二进制文件到板子的特定地址。c:\sdram_init.bin为二进制文件,0xc000000是地址,如有需要sdram_init程序及源码,请发送邮件eabi010@gmail.com

             setpc 0xc000000,setpc是把板子的pc值设置为后面的地址。

             g让板子开始执行0xc000000处的代码。

             h(halt),停止运行,并显示硬件信息。

             loadbin c:\boot.bin 0x57e00000,boot.bin是我的uboot代码,具有nand_flash烧写、网络传输、串口IO等功能,0x57e00000是我的boot.bin代码的运行地址

   上面操作的步骤如下图:

setpc 0x57e00000,然后g,打开终端便可以看到你的bootloader已经启动起来了,

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
### 回答1: jlink_windows_v764c_x86_64是一个Windows操作系统的工具或程序。这个工具可能是为了特定的任务或目的而设计的。 "jlink"可能是指Java Linker,它是Java开发工具包(JDK)的一部分。Java Linker用于创建独立的、自包含的Java运行时映像,它包括了应用程序所需的所有类和依赖项,而不需要依赖外部的Java运行时环境。因此,这个jlink工具可以用于将一个Java应用程序打包成一个独立的可执行文件,方便在不同的环境中部署和运行。 "windows"表示这个工具是为Windows操作系统而设计的。Windows是一种广泛使用的操作系统,具有大量的用户和开发者支持。通过指定操作系统,可以确保这个工具在Windows上的运行和兼容性。 "v764c"可能是这个工具的版本号或标识符。版本号通常用于指示一个软件在开发过程中的不同发布版本。由于版本的不同,可能会引入新的功能、修复错误或改进性能。因此,知道版本号可以帮助我们确定这个工具具体提供了哪些功能和特性。 最后,"x86_64"表示这个工具是为64位x86架构的处理器设计的。x86_64是一种常见的处理器架构,支持64位操作系统和大部分现代计算机。通过指定架构,可以确保这个工具能够正确地在64位x86处理器上运行,并利用其提供的运算能力和内存地址空间。 综上所述,jlink_windows_v764c_x86_64是一个为Windows操作系统、64位x86架构处理器设计的Java Linker工具,用于创建独立的Java运行时映像。 ### 回答2: jlink_windows_v764c_x86_64是指适用于Windows操作系统的jlink版本。jlink是SEGGER公司开发的一款全功能JTAG/SWD刺激器,用于嵌入式开发中的调试和编程。它是一种硬件工具,适用于多种不同的处理器架构。 jlink_windows_v764c_x86_64是针对64位x86架构的Windows操作系统而设计的版本。这意味着这个版本适用于使用了64位x86处理器架构的计算机,而不适用于其他架构的计算机。 使用jlink可以在嵌入式系统中进行调试和编程。它提供了强大的功能,例如读取和写入处理器的内存、查看和修改寄存器的值、跟踪程序执行、设置断点等。因此,它是开发人员进行软件调试和固件烧录的重要工具。 对于想要使用jlink_windows_v764c_x86_64的开发人员来说,他们需要下载并安装这个版本的软件。然后,他们可以将jlink与目标设备连接,并使用该软件来进行调试和编程操作。 总之,jlink_windows_v764c_x86_64是一款适用于64位x86架构的Windows操作系统的jlink版本,用于嵌入式开发中的调试和编程。它提供了丰富的功能,方便开发人员对目标设备进行调试和编程操作。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值