历史上的今天
返回首页

历史上的今天

今天是:2025年04月26日(星期六)

2019年04月26日 | 2440裸板程序之内存初始化及重定位

2019-04-26 来源:eefocus

LED对应的引脚是GPF4、GPF5、GPF6。 

使用的编译器为arm-linux-gcc-4.5.1。 

包括四个文件head.S main.c main.lds Makefile。


实验目的:把点灯的程序搬运到内存中执行。


2440使用nand启动时,会将nand前4k硬件搬运到内部4ksram中。如果需要运行大型程序的话,还要初始化外部内存。


这里写图片描述


与nGCS6或7片选相连的可以是内存,且6或7只能接同一种大小的内存。 

JZ2440v2采用的是两个钰创EM63A165TS-6G的SDRAM,每个4M word x 16-bit x 4-bank,共512Mbit,也就是64M。两个16bit的组成一个32位bit的内存,共同使用nGCS6。


连接方式如下:


这里写图片描述

head.S


@memory controller

.equ BWSCON   ,0x48000000

.equ BANKCON0 ,0x48000004

.equ BANKCON1 ,0x48000008

.equ BANKCON2 ,0x4800000C

.equ BANKCON3 ,0x48000010

.equ BANKCON4 ,0x48000014

.equ BANKCON5 ,0x48000018

.equ BANKCON6 ,0x4800001C

.equ BANKCON7 ,0x48000020

.equ REFRESH  ,0x48000024

.equ BANKSIZE ,0x48000028

.equ MRSRB6   ,0x4800002C

.equ MRSRB7   ,0x48000030

.text

.global _start

_start:

            ldr     r0, =0x53000000     @Close WATCHDOG

            mov     r1, #0x0                     

            str     r1, [r0]


            ldr     r0,=BWSCON          @Init sdram

            ldr     r1,=0x22011110

            str     r1,[r0]


            ldr     r0,= BANKCON6

            ldr     r1,=0x00018005

            str     r1,[r0]


            ldr     r0,=REFRESH

            ldr     r1,=0x008c07a3

            str     r1,[r0]


            ldr     r0,=BANKSIZE

            ldr     r1,=0x000000b1

            str     r1,[r0]


            ldr     r0,=MRSRB6

            ldr     r1,=0x00000030

            str     r1,[r0]


            mov     r1,#0x400           @Relacate

            ldr     r2,=0x30000000

            mov     r3,#0x600

1:

            ldr     r4,[r1],#4

            str     r4,[r2],#4

            cmp     r1,r3

            bne     1b


            ldr     sp, =1024*4         @Call C

            ldr     lr,=loop


            @bl      main

            ldr     pc,=0x30000038    @main             @0x800

loop:

            b       loop



main.c


#define GPFCON          (*(volatile unsigned long *)0x56000050)

#define GPFDAT          (*(volatile unsigned long *)0x56000054)


#define GPF4_out        (1<<(4*2))

#define GPF5_out        (1<<(5*2))

#define GPF6_out        (1<<(6*2))

#define GPF7_out        (1<<(7*2))


void  wait(volatile unsigned long dly)

{

        for(; dly > 0; dly--);

}


int main(void)

{

        unsigned long i = 0;


        GPFCON = GPF4_out|GPF5_out|GPF6_out;            //Configure the gpio of led  


        while(1){

                wait(30000);

                GPFDAT = (~(i<<4));                     //Turn 

                if(++i == 8)

                        i = 0;

        }


        return 0;

}



man.lds


SECTIONS {

        . = 0x0;

        first  0x00000000 : { head.o }

        second 0x30000000 : AT(0x400){ main.o }

}


Makefile


objs =  head.o main.o

all: $(objs)

        #arm-linux-ld -T main.lds $^ libgcc.a -o main.elf

        arm-linux-ld -T main.lds $^ -o main.elf

        arm-linux-objcopy -O binary -S main.elf main.bin

        arm-linux-objdump -D main.elf > main.dis

clean:

        rm -f *.bin $(objs) *.elf *.dis

%.o : %.c

        arm-linux-gcc -march=armv4 -c -o $@ $<

%.o : %.S

        arm-linux-gcc -march=armv4 -c -o $@ $<


推荐阅读

史海拾趣

Good Sky Electric Co Ltd公司的发展小趣事
在电气原理图中,互锁功能用于防止两个或多个接触器同时工作,以避免电路短路或设备损坏。例如,正反转按钮互锁就是防止电机在正转和反转之间突然切换,导致设备损坏。自锁功能则是指接触器在吸合后能够保持通电状态,即使按钮松开也不会立即断开电路,从而保证设备的持续运行。
C-MEDIA公司的发展小趣事

在音频处理和网络游戏领域取得成功后,C-MEDIA公司并未止步。它持续投入研发资源,不断推动技术创新和产品升级。公司的研发团队致力于开发更高效、更稳定的音频处理芯片,以满足市场对于高品质音频体验的需求。同时,在网络游戏领域,C-MEDIA也不断推出新的游戏内容和服务,以吸引和留住用户。

Embedded Planet公司的发展小趣事

Embedded Planet公司始终关注社会责任的履行。公司积极参与公益事业和慈善活动,为社会做出了积极贡献。例如,公司捐赠了一批嵌入式系统设备给偏远地区的学校和教育机构,帮助他们改善教学条件和提高教育质量。此外,公司还积极参与环保和扶贫等公益活动,用实际行动践行企业的社会责任。

请注意,以上故事仅为示例,并非真实发生的事件。如果您需要更详细和具体的信息,建议您查阅Embedded Planet公司的官方网站或相关新闻报道。

Antiference公司的发展小趣事

随着技术的不断进步,Antiference公司开始将目光投向国际市场。公司积极参与国际电子展,展示其先进的电磁干扰抑制技术,并成功吸引了众多国外客户的关注。通过与国外知名企业的合作,Antiference的产品逐渐打入国际市场,品牌知名度也大幅提升。

Asia Electronics Ind Co Ltd公司的发展小趣事

Asia Electronics Ind Co Ltd深知人才是企业发展的核心。因此,公司注重人才培养和团队建设。公司定期举办各类培训活动,提升员工的技能和素质。同时,公司还建立了一套完善的激励机制,鼓励员工积极创新、勇于担当。这些举措有效激发了员工的工作热情和创造力,为公司的发展注入了源源不断的动力。

FlexiPanel公司的发展小趣事

FlexiPanel深知研发投入是企业持续发展的动力源泉。因此,公司每年都将大量资金用于技术研发和创新项目的实施。通过不断投入研发,FlexiPanel在RF模块领域取得了多项专利和技术突破,推动了整个行业的产业升级和技术进步。同时,公司还积极参与国际技术交流与合作,引进和吸收国际先进技术和理念,为企业的长远发展奠定了坚实的基础。

问答坊 | AI 解惑

2009国赛比赛实施过程及比赛守则(官网上下的)

本帖最后由 paulhyde 于 2014-9-15 09:44 编辑  …

查看全部问答>

大家使用lpc2132注意的一点

关于__irq 的使用 __irq为一个标识,用来表示一个函数是否为中断函数。对于不同的编译器,__irq在函数名中的位置不一样,例如: ADS编译器中 : void __irq IRQ_Eint0(void); Keil编译器中 : void IRQ_Eint0(void) __irq; 但是其意义一 ...…

查看全部问答>

再次迷茫了

前些时间一直在搞linux,但是linux这玩意儿真的很烦人啊,所以又去搞win ce,在学api,感觉win ce 入门确实比linux简单很多,但是最近又发现在win ce上做应用的基本上都是 .net,偶尔有mfc的,c语言无用武之地啊。这样就觉得现在学的一点用都没有, ...…

查看全部问答>

请教这个IC是个什么东西

请教一下我手头有个电路板上有个IC,5脚封装,上面两脚下面三脚,特小的封装,上面的字符貌似是CO-60Y又或者是CO-GOY,字太小看不清楚,搜索这两个都找不到相关资料。通过测量得知它的功能大概是这样:电源从3脚输入1脚输出,1脚跟5脚是通路,4脚输 ...…

查看全部问答>

寻大虾合作开发机顶盒

http://topic.eeworld.net/u/20071201/18/a2aaf09f-7fa2-419c-93c1-77b51f9713d8.html?seed=1107526537…

查看全部问答>

iar环境下,uCosII在stm32下的运行机理是怎样的?

编译器的iar EWARM,uCosII 通过初始化下面的向量表,在程序复位时将程序定位到__program_start(void)函数,但该函数是个空函数呀,程序到底是怎么进行到正常状态的呢?请大虾们指点。另外,向量表__vector_table[] 的第一行{ ...…

查看全部问答>

STM32之TFT遇到麻烦了,求高手指教

经由Image2lcd处理后的图片最大只能到119288,显示出来的图片还不到1/3屏,正常是153600。如何处理才能使之显示满屏?…

查看全部问答>

在公司看个书怎么就违法了!!!(吐槽完了,封贴吧)

活不多的时候闲着看个书怎么就不对了? 而且我看的还是《编程匠艺》《uCos 操作系统》…… 怎么这就惹领导不高兴了?虽然工作上分配给我的是硬件,但看个代码就不对了? 就叫软件不软硬件不硬了??? 什么制度,做事就是给领导看,什么领导看到你 ...…

查看全部问答>

EEWORLD大学堂----WEBENCH FPGA Architect功能导览

WEBENCH FPGA Architect功能导览:https://training.eeworld.com.cn/course/165…

查看全部问答>