初段——2440地址空间理解和jlink烧写SRAM

本文介绍了S3C2440 ARM9处理器的启动模式,包括NAND启动和NOR启动的区别,并详细阐述了如何使用JLink将简单的LED流水灯程序烧录到S3C2440。文章还提供了具体的寄存器配置和代码示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

对于一个习惯51,AVR,对于理解程序下载在什么地方,执行时又是在那个地址所带来的安全感是开发的开始。2440仅仅是一快ARM9的处理器内部内有ROM,而ram也少的可怜(4KBoot SRAM),因而需要在其外部挂上储存芯片,而24408个部分的外接储存设备接口,每个接口的地址已经固定且最大不能超过128M

2440支持两种启动模式:

启动模式通过管脚电平设定,所以在上电之前其启动模式已经设定好。

1Nand启动:上电,硬件立即从外部的nand flash 的前4K拷贝到SRAM中,地址0x0000SRAM0地址开始,及上电时cpu的主控权完全交给BootInternalSRAM (4KB),至于要把nand flash中的内容复制到SDRAM还是点亮一个LED就看你怎么编写。

2nor启动: 0地址指向nor flash0地址而非sram0地址,上电cpu0地址执行。

上电之前确定2440的启动模式后所有的储存设备的物理地址就已经确定,其执行各个设备的地址同时也已经确定。烧写地址和执行时的设备地址一样,烧写不过是利用jlinkh-link等把二进制文件烧写烧对应的地址address内,address为设备地址既保持该二进制文件的地址,你需要注意address的地址是否指向你要的设备,还有该设备是否需要擦除。

以下是我烧写用jlinkled流水灯到jz2440的程序:

step1:关看门狗,默认看门狗是开的

disable_watch_dog:
    @ 往WATCHDOG寄存器写0即可
    mov r1,     #0x53000000
    mov r2,     #0x0
    str r2,     [r1]
    mov pc,     lr      @ 返回


step2:设置寄存器的值便于使用Bank6外接的SDRAM可以不要,流水灯程序很小boot internnal SRAM空间足够了

mem_cfg_val:
    @ 存储控制器13个寄存器的设置值
    .long   0x22011110      @ BWSCON
    .long   0x00000700      @ BANKCON0
    .long   0x00000700      @ BANKCON1
    .long   0x00000700      @ BANKCON2
    .long   0x00000700      @ BANKCON3  
    .long   0x00000700      @ BANKCON4
    .long   0x00000700      @ BANKCON5
    .long   0x00018005      @ BANKCON6
    .long   0x00018005      @ BANKCON7
    .long   0x008C07A3      @ REFRESH
    .long   0x000000B1      @ BANKSIZE
    .long   0x00000030      @ MRSRB6
    .long   0x00000030      @ MRSRB7

step3:跳转到C语言的main()中、main为流水灯

   bl  main

Step4生产编译链接生成bin文件

Step5利用jlink commander烧写binaddress 0x00  (注意是nand启动)

jlink执行的命令

1

2loadbinC:\Users\Michael\Desktop\sdram\leds.bin  0x00 (如果是nor启动则是 ox40000000)

3setpc ox00(如果是nor启动则是 ox40000000)

4g


记住启动时nan  和nor是 其地址会不同一定要弄明白下表在写代码:




源文档 <http://blog.youkuaiyun.com/chinalj2009/article/details/12349163

### 26年考研复习规划 #### 数学二复习策略 针对数学二的复习,建议采取分阶段的方式进行: - **基础巩固期 (4月至7月)**:此期间应专注于基础知识的学习与理解。选择一位合适的讲师跟随学习,推荐武忠祥老师的课程[^3]。准备一本笔记本用于记录重要知识点解题思路,这有助于后续快速回顾。 ```python # Python示例代码展示如何创建笔记文件 with open('math_notes.txt', 'w') as file: file.write("Math Notes:\n") ``` - **强化训练期 (8月至10月)**:完成一轮全面的知识梳理之后,进入大量做题环节。优先考虑使用李正元全书及其配套习题集作为主要资源。对于难题或新颖的方法应当特别留意并记录下来以便日后查阅。 - **冲刺提升期 (11月初至考试前)**:这段时间里应该集中精力处理历年真题以及高质量模拟试题。每天至少完成一套完整的测试,并认真分析错误原因以改进不足之处。推荐使用的模拟试卷包括但不限于张宇系列、余丙森五套卷等。 #### 英语二复习安排 英语部分同样需遵循循序渐进的原则来进行有效备考: - **词汇积累与阅读理解 (全年持续进行)**:无论处于哪个阶段都要坚持不懈地扩充单词量;同时通过广泛阅读提高文章解读能力。 - **专项技能培养 (9月至次年1月中旬之前)**:除了日常练习外还需专门抽出时间来加强听力、作等方面的特训。特别是到了后期更要注意实际动手书完整版的文章[^2]。 - **模考演练 (1月下旬起直至考前一周左右)**:临近正式考试时每周固定次数参加全程仿真测验,以此检验自己的真实水平并对薄弱项目做出针对性调整。 #### 计算机学科综合(408) 对于计算机专业的同学来说,408科目的准备工作至关重要: - **早期预习 (上半年度)**:尽早接触相关书籍技术文档,初步了解各个子领域内的核心概念发展趋势。 - **深入钻研 (下半年初段)**:随着理论框架逐渐清晰化,开始着手解决具体问题——比如编程序实现某些算法或者参与开源项目贡献代码片段。 ```c++ // C++示例代码演示简单排序函数 void bubbleSort(int arr[], int n) { for (int i = 0; i < n - 1; ++i) for (int j = 0; j < n - i - 1; ++j) if (arr[j] > arr[j + 1]) std::swap(arr[j], arr[j + 1]); } ``` - **实战演习 (年末冲刺阶段)**:反复研究过往几年的真实考题模式,掌握命题规律的同时也要注意收集整理个人容易犯错的地方加以改正。此外还可以适当参考其他院校同类型考核的要求拓宽视野范围。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值