历史上的今天
返回首页

历史上的今天

今天是:2025年01月11日(星期六)

2020年01月11日 | BootLoader(2440)核心初始化代码

2020-01-11 来源:eefocus

1.gboot.lds

OUTPUT_ARCH(arm)
ENTRY(_start)
SECTIONS {
    . = 0x30008000; //起始地址
    
    . = ALIGN(4);//4字节对齐
    .text :  //代码段
    {
    start.o (.text)//以.o开始执行
    *(.text)
    }

    . = ALIGN(4);
    .data : //数据段
    {
    *(.data)
    }
    
    . = ALIGN(4);
    bss_start = .;//定义变量
    .bss : //未初始化段
    {
    *(.bss) 
    }
    bss_end = .;
}
2.start.S

.text  
.global _start//定义全局变量
_start: //代码开始执行

//以下是异常向量表代码
    b reset//复位
    ldr pc, _undifined_instruction
    ldr pc, _software_interrupt
    ldr pc, _prefetch_abort
    ldr pc, _data_abort
    ldr pc, _not_used
    ldr pc, _irq
    ldr pc, _fiq
    
//定义相应的变量 进行跳转
_undifined_instruction: .word undifined_instruction
_software_interrupt: .word software_interrupt
_prefetch_abort: .word prefetch_abort
_data_abort: .word data_abort
_not_used: .word not_used
_irq: .word irq
_fiq: .word reset
//跳转之后所实现的功能
undifined_instruction:
    nop

software_interrupt:
    nop
    
prefetch_abort:
    nop
    
data_abort:
    nop

not_used:
    nop

irq:
    nop

fiq:    
    nop
//复位
reset:
    bl set_svc
    bl disable_watchdog
    bl disable_interrupt
    bl disable_mmu
//设置svc模式
set_svc:
    mrs r0, cpsr
    bic r0, r0,#0x1f
    orr r0, r0,#0xd3
    msr cpsr, r0
    mov pc, lr
//关闭看门狗
#define pWTCON 0x53000000
disable_watchdog:
    ldr r0, =pWTCON
    mov r1, #0x0
    str r1, [r0]
    mov pc, lr
//关闭中断
disable_interrupt:
    mvn r1, #0x0
    ldr r0, =0x4a000008
    str r1, [r0]
    mov pc, lr
    //关闭mmu
disable_mmu:
    mcr p15,0,r0,c7,c7,0
    mrc p15,0,r0,c1,c0,0
    bic r0, r0, #0x00000007
    mcr p15,0,r0,c1,c0,0
    mov pc, lr

//makefile文件 
3.Makefile

all: start.o 
    arm-linux-ld -Tgboot.lds -o gboot.elf $^
    arm-linux-objcopy -O binary gboot.elf gboot.bin
    
%.o : %.S
    arm-linux-gcc -g -c $^
    
%.o : %.c
    arm-linux-gcc -g -c $^
    
.PHONY: clean
clean:
    rm *.o *.elf *.bin

/******************************** Stay hungry, Stay foolish. @Rocky ********************************/


推荐阅读

史海拾趣

DIOO公司的发展小趣事

随着市场竞争的加剧和消费者需求的不断变化,DIOO公司意识到品牌重塑和多元化发展的重要性。在近几年中,DIOO公司加强了品牌宣传和推广力度,通过推出新的品牌形象和广告活动,提高了品牌知名度和美誉度。同时,DIOO公司还积极拓展产品线,推出了包括智能家居、智能穿戴设备、游戏硬件等在内的多元化产品系列,进一步满足了消费者的多样化需求。

Compound Photonics公司的发展小趣事

尽管在Micro LED领域遭遇了挫折,但Compound Photonics并没有因此沉沦。相反,公司凭借其在LCoS领域的深厚技术积累和良好的市场口碑,吸引了众多潜在合作伙伴的关注。其中,Snap公司表现出了强烈的收购意向。这一消息传出后,Compound Photonics的市场价值得到了进一步提升,公司的发展前景也变得更加广阔。

这五个故事展示了Compound Photonics公司在电子行业里发展起来的一些关键节点和重大事件。从收购Syntax-Brillian开启微显示领域之路,到微投显示模组项目失利后转向LCoS方向,再到成为业内知名LCoS方案商并与Lumus合作,以及与Plessey合作开发Micro LED产品遭遇Meta竞争,最后到Snap的收购意向,每一个故事都反映了公司在不同阶段的挑战与机遇。通过这些故事,我们可以看到Compound Photonics公司在电子行业里不断进取、创新发展的精神风貌。

Clover Display Limited公司的发展小趣事

随着业务的不断发展,Clover Display Limited意识到规模化生产的重要性。1993年,公司在中国顺德建立了一座占地8000平方米的工厂,专门从事客户定制的LCD及LCM的工业应用。这一举措不仅大幅提升了公司的生产能力,也使其能够更深入地了解市场需求,开发出更符合客户要求的产品。工厂的建立标志着Clover Display Limited在液晶显示领域的地位进一步巩固。

ELPIDA公司的发展小趣事

ELPIDA公司成立于1999年,是日本在DRAM(动态随机存取存储器)领域的重要企业。它的成立是对当时日本半导体产业的一次重要整合,由NEC、日立、三菱电机等公司的DRAM业务合并而成。这一举措旨在振兴日本在DRAM领域的竞争力,并保护国内DRAM产业。

Hittite Microwave(ADI)公司的发展小趣事

ELPIDA公司成立于1999年,是日本在DRAM(动态随机存取存储器)领域的重要企业。它的成立是对当时日本半导体产业的一次重要整合,由NEC、日立、三菱电机等公司的DRAM业务合并而成。这一举措旨在振兴日本在DRAM领域的竞争力,并保护国内DRAM产业。

GAIA Converter Inc公司的发展小趣事

在环保意识日益增强的今天,锋鸣电子(深圳分公司)积极响应国家号召,致力于绿色电子产品的研发与生产。公司投入大量资金引进环保设备和生产工艺,确保产品从原材料采购到生产制造的全过程都符合环保标准。同时,锋鸣电子还积极推广节能减排理念,为客户提供绿色、低碳的电子产品解决方案。凭借在绿色环保方面的突出表现,锋鸣电子赢得了业界的广泛赞誉。

问答坊 | AI 解惑

问一下

如果感应头不工作是什么原因啊,工作的发光二极管亮,但是感应头不工作。谁知道有那些原因啊 程序好使,只是从硬件上找。…

查看全部问答>

Linux2.6完全 移植教程,基于TQ2440开发板

开发板移植好教程,入门者的福音 还在为Linux移植入门而烦恼吗?还在为Linux驱动而头痛吗?还在为没有一本从入门到真正移植的好书苦闷吗? 现在您有一个好的选择,天嵌科技推出一部和开发板完美结合的教程:从下载源码到将内核移植适合于TQ2440开 ...…

查看全部问答>

51和fpga通信

那个知道51怎么和FPGA通信啊?高手指点下啊!!…

查看全部问答>

ce ActiveSync连接的问题

ActiveSync通过USB接口连接设备一直挺好的,可今天我拔usb线断开连接啊,机子死机了,重启过后就不行了,ce设备起来后无法自动连上,我只好手动运行repllop.exe进行连接,连上后,下载程序,运行很慢。我卸载重装都不行,换USB接口也不行,请问我改 ...…

查看全部问答>

at89c51芯片加上cd4511bcn做一个计数器出错,请教下挫在那里?

at89c51芯片的p0管脚作为2个四位bcd码的输出到cd4511bcn中去,然后通过cd4511bcn输出到2个8段显示器中,但是总是没有任何反应,请各位帮忙看看:以下是代码: -+         COUNT        EQU     ...…

查看全部问答>

wince下怎么显示图像阴影

填充圆内的颜色, wince里不能用CreateHatchBrush显示各种阴影,那有什么其他函数能显示呢? 画直线, wince里不能用CreatePen的另一种函数,那如果我想画各种线该怎么做呢?比如点线…

查看全部问答>

诺基亚卖了Qt,未来还会卖什么?

  已经决定和微软合作开发Windows Phone手机的诺基亚,就把原来收购的 Qt放到了角落。据国外媒体报道,诺基亚决定将QT商业授权和服务业务出售给一家芬兰Digia公司,Digia计划雇用19名的诺基亚原来QT 相关雇员。        ...…

查看全部问答>

请大哥看看我的这个问题

我的MCU与上位机通信,同时需要处理一些事务,但当处理某些事务时是不允许上位机通信中断的,这样上位机通信有些时候就不通,当比较严重的时候是无法接受的,这是不是就要用到多任务操作系统了,专门用一个任务来与上位机中断通信,另外的任务来处 ...…

查看全部问答>

开关电源讲议

开关电源讲议,对初学者很有帮助的! [ 本帖最后由 aishuang 于 2011-7-17 07:43 编辑 ]…

查看全部问答>