FL2440 (2) 裸板程序 SDRAM

关于FL2440烧写Norflash两种方法介绍(J-flash和H-flash) 在网上搜了一些资料,关于如何利用H-flash烧写FL2440 Norflash的文章比较多,但是如何利用J-flash烧写却不多。前一段时间老是烧不进去,提示Flash ID错误,今天终于找到问题所在了。原来还是配置和跳线帽的位置不对,下面总结一下。首先,把跳线帽J5拔掉OM0为高电平,选择Norflash启动,然后把跳线帽J2跳到0,根据原理图可知此时Norflash的片选与NGCS0相连,N 阅读详情

以下是jz2440的head.s文件,在FL2440可以使用,不做更改.注意这是NANDFLASH启动方式,FL2440开发板上的J5和J2都要插上.

@*************************************************************************
@ File:head.S
@ 功能:设置SDRAM,将程序复制到SDRAM,然后跳到SDRAM继续执行
@*************************************************************************       

.equ        MEM_CTL_BASE,       0x48000000
.equ        SDRAM_BASE,         0x30000000

.text
.global _start
_start:
    bl  disable_watch_dog               @ 关闭WATCHDOG,否则CPU会不断重启
    bl  memsetup                        @ 设置存储控制器
    bl  copy_steppingstone_to_sdram     @ 复制代码到SDRAM中
    ldr pc, =on_sdram                   @ 跳到SDRAM中继续执行
on_sdram:
    ldr sp, =0x34000000                 @ 设置堆栈,64M内存
    bl  main
halt_loop:
    b   halt_loop

disable_watch_dog:
    @ 往WATCHDOG寄存器写0即可
    mov r1,     #0x53000000
    mov r2,     #0x0
    str r2,     [r1]	@将r2寄存器的值写到r1寄存值对应的地址单元
    mov pc,     lr      @// 返回,用bl跳转会把返回地址(bl的下一条指令的地址)保存在lr寄存中

copy_steppingstone_to_sdram:
    @ 将Steppingstone的4K数据全部复制到SDRAM中去
    @ Steppingstone起始地址为0x00000000,SDRAM中起始地址为0x30000000
    
    mov r1, #0
    ldr r2, =SDRAM_BASE @第二参数有"="表示伪指令,r2为读SDRAM_BASE的地址
    mov r3, #4*1024
1:  
    ldr r4, [r1],#4     @ 从Steppingstone读取4字节的数据,并让源地址加4
    					@ //将r1寄存器的值做为地址取的的数据存到r4中,并且r1寄存器的值+4
    					
    str r4, [r2],#4     @ 将此4字节的数据复制到SDRAM中,并让目地地址加4  
						@ //将r4的数据保存到地址为r2寄存器值,并且r2寄存器的值+4
    
    cmp r1, r3          @ 判断是否完成:源地址等于Steppingstone的未地址?
    bne 1b              @ 若没有复制完,继续 跳到上个段开始,1的位置  b:back 1表示第一个1标号处
    mov pc,     lr      @ 返回

memsetup:
    @ 设置存储控制器以便使用SDRAM等外设

    mov r1,     #MEM_CTL_BASE       @ 存储控制器的13个寄存器的开始地址
    adrl    r2, mem_cfg_val         @ 这13个值的起始存储地址
									@ adrl 这是一条中等范围的地址读取伪指令,它将基于PC的相对偏移的地址值读到目标寄存器中。
									@									
    
    add r3,     r1, #52             @ 13*4 = 54  r3=r1+52 =0x48000000 +#52 0x48000034
1:  
    ldr r4,     [r2], #4            @ 读取设置值,并让r2加4
    str r4,     [r1], #4            @ 将此值写入寄存器,并让r1加4
    cmp r1,     r3                  @ 判断是否设置完所有13个寄存器
    bne 1b                          @ 若没有写成,继续
    mov pc,     lr                  @ 返回


.align 4
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

我的FL2440开发板的SDRAM是两片 H57V2562GTR-75C 最高主频133,16M*16。

下面是makefile文件,没有改变还是jz2440的.

sdram.bin : head.S  leds.c
	arm-linux-gcc  -c -o head.o head.S
	arm-linux-gcc -c -o leds.o leds.c
	arm-linux-ld -Ttext 0x30000000 head.o leds.o -o sdram_elf
	arm-linux-objcopy -O binary -S sdram_elf sdram.bin
	arm-linux-objdump -D -m arm  sdram_elf > sdram.dis
clean:
	rm -f   sdram.dis sdram.bin sdram_elf *.o

下面是leds.c文件,要对应FL2440的原理图.


//FL2440	
#define	GPBCON		(*(volatile unsigned long *)0x56000010)
#define	GPBDAT		(*(volatile unsigned long *)0x56000014)

#define	GPB5_out	(1<<(5*2))
#define	GPB6_out	(1<<(6*2))
#define	GPB8_out	(1<<(8*2))
#define	GPB10_out	(1<<(10*2))

void  wait(volatile unsigned long dly)
{
	for(; dly > 0; dly--);
}


int main(void)
{
	unsigned long i=0;
	//     0010 0000
	//     0100 0000
	//   1 0000 0000
	// 100 0000 0000
	unsigned long arr[4]={0x20,0x40,0x100,0x400};
	GPBCON = GPB5_out|GPB6_out|GPB8_out|GPB10_out;		// 将LED0-3对应的GPB 5/6/8/10  output

	while(1)
	{
		for(i=0;i<4;i++)
		{
			//GPBDAT=0x7ff;
			//wait(90000);
			GPBDAT=~arr[i];		
			wait(90000);	
                 }
	}

	return 0;
}


	

编译环境用的是ubuntu9.10,直接用韦老师的虚拟机文件。

fl2440开发板的一些小知识(别人总结的) 这些小知识我感觉很受用,移植uboot 内核 文件系统 都会用到里面相关的知识,是一些很基础但是很实用的只是,在网上找到的,mark一下! 1、储存管理器 cpu要访问外部硬件,需要使用存储控制器,存储控制器提供访问外部器件的所有控制信号:26位地址信号、32位数据信号、8个片选信号以及读写控制信号。 2、BANK0到BANK7:它们对应s3c2440的存储空间。 阅读详情

相关推荐

Transformer凭什么取代RNN?深入拆解自注意力机制与梯度消失问题的终极对决

本文深入探讨了Transformer如何通过自注意力机制解决RNN的梯度消失问题,成为自然语言处理领域的新标准。通过对比RNN和Transformer的架构差异,揭示了自注意力机制在并行计算、长期依赖处理等方面的技术优势,并提供了实际任务中的性能对比数据。

f6g7h8i9j的博客 190

Mini2440学习笔记(三)——SDRAM

 2440的存储控制器:2440的存储控制器有个8个BANK:BANK0~BANK7,对外引出27根地址线(ADDR0~ADDR26),访问范围是128M,有8个片选信号(nGCS0~nGCS7)与之对应,所有可以访问1G的地址空间。BANK6和BANK7的可访问地址空间是可以设置的。只有BANK6和BANK7可以外接SDRAM或SRAM。CPU提供了一组用于SDRAM的信号(具体内容在datas

Bob's Blog 2880

BugkuCTF-PWN题pwn2-overflow超详细讲解

解题思路 1)计算出get_shell_的地址偏移量 2)算出来之后就直接溢出到后门函数 知识点 x64函数调用规则 解题之前我们先学下linux x64的函数调用规则。 x64机器在调用某个函数前,比如int func(int a, int b, int c, int d, int e, int f, int g, int h),首先他会把前6个参数从左往右存入到寄存器rdi、rsi、rdx、rcx、r8、r9,其余参数存入到栈里,保存的顺序是从右往左入栈。比如abcdef会存入到寄存器里,然后一次入栈h

am_03的博客 3013

uboot移植之修改支持SDRAM篇4

uboot移植之前期准备篇1 uboot移植之init_sequence_f函数数组分析(番外篇) uboot移植之Makefile分析概述篇2 uboot移植之源码流程分析篇3(超详细!) uboot移植之修改支持NorFlash篇5 uboot移植之修改支持NandFlash识别篇6(超详细) 查看电路图,不难看出SDRAM、Nor Flash、DM9000都是内存类的接口,即芯片...

弯弯月牙儿 1359

从0开始写Vue项目-环境和项目搭建

什么是VueVue.js - 渐进式 JavaScript 框架 | Vue.js (vuejs.org)2.介绍与描述动态构建用户界面的渐进式JavaScript框架作者:尤雨溪3.Vue的特点遵循MVVM模式编码简洁,体积小,运行效率高,适合移动/PC端开发它本身只关注UI,可以引入其它第三方库开发项目4.与其他JS框架的关联借鉴 Angular 的模板和数据绑定技术借鉴 React 的组件化和虚拟DOM技术5.Vue周边库vue-cli:vue脚手架axios。

不愧是暮言的博客 1483

对计算机专业来说学历真的重要吗?

我本科学校是渣渣二本,研究生学校是985,现在毕业五年,校招笔试、面试,社招面试参加了两年了,就我个人的经历来说下这个问题。 这篇文章很长,但绝对是精华,相信我,读完以后,你会知道学历不好的解决方案,记得帮我点赞哦。 先说结论,无论赞不赞同,它本质就是这样:对于技术类工作而言,学历五年以内非常重要,但有办法弥补。五年以后,不重要。 目录: 张雪峰讲述的事实 我看到的事实 为什么会这样 ...

启舰 55万+

S3C2440移植uboot之新建单板_时钟_SDRAM_串口

上一节分析了uboot启动过程,这一节来新建 支持S3C2440 1.新建单板 1.12410的单板文件夹拷贝成2440: cd /work/system/u-boot-2012.04.01/board/samsung cp smdk2410 smdk2440 -rf 1.2将2410的头文件拷贝成2440 cd ../../include/configs/ cp smdk2410.h smd...

嵌入式与Linux那些事的博客 5360

10、硬件工程师笔试面试——继电器(2025版本)

在设计电路时,应综合考虑SSR的优势和局限性,确保选择合适的型号,并采取适当的设计措施来优化性能和可靠性。继电器的主要功能是利用较小的电流或电压来控制较大电流或电压的电路,实现信号的放大和隔离。在处理继电器故障时,应综合考虑电源、线圈、触点和负载等因素,及时进行故障诊断和处理,以确保电路系统的稳定性和安全性。由于汽车电子系统的复杂性,继电器的设计和选择必须考虑到系统的特定要求,包括电流容量、电压等级、环境条件(如温度、湿度、振动)以及所需的保护和隔离功能。确定线圈的工作电压或电流,以及吸合电压或电流。

XU157303764的博客 3733

S3C2440裸板程序之第一个程序

 一. 编写 实现点亮一个LED 1. 汇编程序代码 led_on.s: @目标: 点亮一个LED @功能: GPF4 输出低电平 @时间: 2018/06/07 .text .global _start _start: ldr r0, =0x56000050 @GPFCON 寄存器 mov r1, #0x00000100 @[9:8] = 01 ,设置GPF4为输出功能 str ...

368

Android功耗系列专题理论之二十一:Power Monitor测功耗详细说明和注意事项

本文详细介绍了PowerMonitor手机功耗测试仪的功能与使用方法。该设备通过硬件连接替代手机电池,实时监测电流、电压等参数,适用于研发测试、软件优化等场景。文章包含设备接线说明(电源、USB、手机供电等接口)、驱动安装步骤及常见问题排查,并详细讲解了功耗测量操作流程,包括电压设置、开机步骤、数据采集与导出方法。特别强调了测量注意事项,如固定屏幕亮度、关闭后台应用、确保稳定连接等,以确保测试数据准确性。最后提供了简易测量步骤和详细测量流程指导。

599

Spring AI 实战:第五章、Spring AI本地模型部署之省钱小能手

白嫖的快乐你想象不到经过这番折腾,我们成功实现了零成本使用大模型完全本地运行保障隐私可视化访问Java生态无缝集成但可能有的小伙伴要吐槽,怎么换个底层模型这次就新建一个工程了呢?不能在以前的工程上开发吗?这样也太不优雅了吧~,我知道你很急,但先别急,等下一章节再来解决这个问题。为什么程序员特别喜欢Ollama?因为它就像一只温顺的羊驼——不花钱还能24小时产出代码!

liaokailin的专栏 922

FL2440开发板的介绍和烧录

一.FL2440硬件介绍2.重要硬件型号3.开发板储存介绍二.烧录1。因为CPU上没有程序、驱动,所以采取J-link烧录。(J-link千万不要进行热拔插)u-boot相当与电脑系统里的BIOS引导系统,需要首先要加载u-boot到开发板上,但是u-boot程序大概有24K左右的大小,不能在SRAM里面运行,而SDRAM在使用之前必须要将其初始化;所以这里讲面临一个问题,该如何加载u-boot?...

嵌入式萌新_博客 2137

TEA-Tiny Encryption算法在FPGA的实现

在FPGA原型中,我们定义了一个TEA_FPGA模块,该模块包含一个输入数据端口(plain)、一个输入密钥端口(key)和一个输出数据端口(cipher)。在模块中,我们通过32轮的循环处理来实现TEA算法的加密过程,并将最终结果存储在cipher变量中。由于FPGA硬件的高速性能,这种基于HDL的TEA算法实现可以在短时间内完成大量的数据加密处理,从而提高加密效率和性能。总之,在FPGA中实现TEA算法可以大大提高加密效率和性能,通过使用硬件描述语言HDL来实现可以更高效、更快速地完成数据加密操作。

BitSlinger的博客 272

FL2440(3) 裸板程序 mmu

程序主要是JZ2440的,只是改了一下led.c,下载后发现led闪得非常快. head.S @************************************************************************* @ File:head.S @ 功能:设置SDRAM,将第二部分代码复制到SDRAM,设置页表,启动MMU, @ 然后跳到SDRAM继续执...

oshan2012的博客 240

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

FL2440开发板简介及其烧录

目录 FL2440开发板简介 FL2440开发板 FL2440硬件资源列表 开发板存储系统: FL2440开发板烧录 FL2440烧录流程: 烧录准备工作 烧录文件: 硬件准备: 烧录过程 J-link操作: u-boot下烧录: 开发板启动流程: FL2440开发板简介 FL2440开发板 FL2440硬件资源列表 部件 型号 说明 CPU ...

Tian Jincheng's Blog 1367

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

FL2440 uboot-kernel-rootfs 烧写总结

FL2440核心板默认烧录了厂家的系统(bootloader: FL_2440bootV6-1)。经过测试,使用厂家提供的DNW烧写方法烧写发现,该方法限制条件较多,比如DNW软件驱动的安装兼容性问题,当前验证在XP环境下可以正确安装驱动并映射出端口,磕磕绊绊较多,故参考网上FL2440烧录资料,总结FL2440烧录心得,以备后续查阅。 使用工具:J-Link J-link强制烧写uboot原...

oshan2012的博客 287

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

FL2440开发板第一次烧录以及启动过程简要分析

开发板烧录的流程如下图: 1.J_link加载bootstrap到开发板的SRAM的0地址上运行,bootstrap程序用来初始化外部的SDRAM。 2.J_link加载u-boot程序到外部的SDRAM 0x33f80000地址上运行,u-boot相当于PC上的BIOS。 3.u-boot在SDRAM中运行起来后,使用tftp命令将u-boot,linux内核(包括根文件系统)烧录到nandfl...

心.跳的博客 542

FL2440 uboot-kernel-rootfs 烧写总结

       FL2440核心板默认烧录了厂家的系统(bootloader: FL_2440bootV6-1)。经过测试,使用厂家提供的DNW烧写方法烧写发现,该方法限制条件较多,比如DNW软件驱动的安装兼容性问题,当前验证在XP环境下可以正确安装驱动并映射出端口,磕磕绊绊较多,故参考网上FL2440烧录资料,总结FL2440烧录心得,以备后续查阅。使用工具:J-LinkJ-link强制烧写ubo...

baidu_23451593的博客 443

FL2440开发板介绍及其烧录

开发板硬件资源:开发板硬件资源列表:部件型号说明CPUS3C2440Samsung、 ARM920T、400MHzSDRAMK4S561632N32MB*2=64MB(内存)NandflashK9F2G08256MB(硬盘)以太网卡DM900010M/100M自适应EEPROMAT24C011Kb I2C接口USB4*USB 1.1 Host,  1*USB DeviceSD1*Standard ...

zusi_csdn 595

S3C2440裸板程序之SDRAM

       S3C2440从Nand Flash启动CPU时, CPU会通过硬件动作将Nand Flash开始的4KB数据复制到称为Setppingstone的4KB的内部RAM中,然后跳到地址0开始执行。         本实例先使用汇编语言设置好存储控制器,使外接的SDRAM可用,然后把程序本身从Steppingstone复制到SDRAM ,最后跳到SDRAM中执行。 head.S ...

258

uboot编译的bin文件的在fl2440的烧录

准备工作: 目标板:fl2440基本信息: 我的fl2440板子是2013年之前的板子,板子有nor flash和nand flash。我们的uboot可以烧录在nor flash中然后从nor flash启动uboot SDRAM 型号 : K4s561632N 2pcs nor flash 型号 : JS28F320 1pcs nand flash型号

ymlmail的博客 783

fl2440开发板的烧录流程

一块新的板子在开始使用的时候需要将SDRAM(内存)以及Nandflash(硬盘)初始化,

Peter_tang6的博客 746

求高手解答FL2440的问题

项目需要,最近入手了FL2440,开始了ARM9学习。 最近先编了个S3C2440裸机程序跑马灯。程序成功运行(手册中源码有点错误,改过来就好)但是 引来几个问题 1.  ARM内存地址中对应的单元是多少?比如0x32000000这个内存地址中可以放多大数据?      目前看来是一个字节。即8位。0x32000000可以放8位数据,0x32000001又可以放8位数据

bbs598598的专栏 2190

FL2440移植u-boot

转自本人其他账户 u-boot version:2011.09-rc1 /home/lucas/u-boot-2011.09-rc1 OS:debian 7.1 cross-compilation chain:arm-linux-4.3.2 致谢:部分内容参考http://my.youkuaiyun.com/crazyman2010的博文,感谢分享。

CCodeMonkey 952

FL2440开发版烧录,u-boot移植,和简单C程序运行

烧录文件说明:bootstrap-s3c2440.bin bootstrap文件是用汇编写的一段代码,主要用来初始化CPU外部的SDRAM;在烧录时,该程序需要使用j-link下载到0x0(CPU内部SRRAM)地址上去运行,另外此程序不需要烧录到Nandflash上。u-boot-s3c2440.binu-boot就相当于电脑的BIOS程序,该程序用来烧录/启动Linux系统等。在运行完boot

颜言研的博客 846

玩转开发板--Linux系统移植至开发板fl2440实践过程

一.开发板介绍     CPU:S3C2440(SAMSUNG)、ARM920T、400MHz     Pone/mic:耳机和话筒     JTAG:可以通过外部插入直接控制CPU,因此在初始化内存时,起到重要作用。     ADC:采样A模拟,D数字,C转换。     EEPROM:电可擦可编程只读存储器(可存放MAC地址)。    LCD:电阻式屏幕。     CAMEAR...

PipiAvenger的博客 1963
上一篇: FL2440开发板介绍及其烧录
下一篇: 汇编 bne 1b和bne 1f浅析
oshan2012
博客等级 码龄15年 300粉丝 91原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

oshan2012

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值