start.S源码:
.globl _start
_start:
// 硬件相关的设置
// Peri port setup
ldr r0, =0x70000000
orr r0, r0, #0x13
mcr p15,0,r0,c15,c2,4 @ 256M(0x70000000-0x7fffffff)
// 关看门狗
// 往WTCON(0x7E004000)写0
ldr r0, =0x7E004000
mov r1, #0
str r1, [r0]
// 重定位
adr r0, _start // 伪指令,取_start的当前地址
ldr r1, =_start // _start的链接地址:在连接脚本中划分的地址
ldr r2, =bss_start //bss_start的链接地址
cmp r0, r1 //比较当前地址和链接地址是否相同,即代码是否已经在链接地址处运行
beq clean_bss //相等的话直接去清BSS段
copy_loop: //不相等重定位代码
ldr r3, [r0], #4 //把r0对应的值给r3,再把r0加4
str r3, [r1], #4 //把r3的值给r1对应的空间,再把r1加4
cmp r1, r2 //比较r1和r2,_start地址拷贝到bss_start为止,看代码段有没有拷贝完成
bne copy_loop //不相等继续循环
// 清bss段
clean_bss:
ldr r0, =bss_start // bss_start的链接地址
ldr r1, =bss_end // bss_end的链接地址
mov r2, #0
clean_loop:
str r2, [r0], #4
cmp r0, r1
bne clean_loop
// 设置栈
ldr sp, =8*1024
ldr pc, =main //跳到链接地址处运行
//bl main //依然在原地址处运行
halt:
b halt
====================================================================
led.c源码:
void delay()
{
volatile int i = 0x10000;
while (i--);
}
volatile int i = 0;
volatile int j = 0x12345678;
volatile int k = 0;
volatile int g;
int main(void)
{
volatile unsigned long *gpmcon = (volatile unsigned long *)0x7F008820;
volatile unsigned long *gpmdat = (volatile unsigned long *)0x7F008824;
// gpm0,1,2,3设为输出引脚
*gpmcon = 0x1111;
if (k != 0)
return;
while (1)
{
*gpmdat = i;
i++;
if (i == 16)
i = 0;
delay();
}
return 0;
}
====================================================================
Makefile:
led.bin: start.o led.o
arm-linux-ld -T leds.lds -o led.elf start.o led.o
arm-linux-objcopy -O binary led.elf led.bin
arm-linux-objdump -D led.elf > led.dis
start.o : start.S
arm-linux-gcc -o start.o start.S -c
led.o : led.c
arm-linux-gcc -o led.o led.c -c
clean:
rm *.o led.elf led.bin led.dis -f
====================================================================
leds.lds:
SECTIONS
{
. = 0x1000; //链接地址在片内内存4096的位置
.text : {
start.o
* (.text)
}
.data : {
* (.data)
}
bss_start = .; // 0x1150
.bss : {
* (.bss)
}
bss_end = .;
}
====================================================================
注意:
s3c6410启动时自动拷贝nand flash前4页的内容到片内内存执行,而且拷贝时只拷每页中的前2KByte好像是为了兼容2k页的 所有copy2ddr函数中不要把所有数据全部照搬过去,只搬每页的前2k到ddr连接起来 。
上一篇:OK6410裸机之DDR片外内存访问
下一篇:OK6410启动分析
推荐阅读
史海拾趣
以下是关于台湾岱恩(DAIN)电子工业股份有限公司在电子行业中发展起来的五个相关故事,每个故事都基于事实进行描述,避免主观褒贬:
- 创业初期的专注与坚持
岱恩电子工业股份有限公司成立于1989年,初期专注于薄膜电容器的研发与生产。公司凭借对技术的深入研究和对品质的严格把控,迅速在薄膜电容器领域崭露头角。在创业初期,岱恩电子就明确了以技术创新和品质保证为核心竞争力的战略定位,为公司的长远发展奠定了坚实的基础。
- 品质管理的建立与提升
岱恩电子始终将品质管理作为企业发展的重中之重。自成立之初,公司就引进了ISO9001国际品质认证体系,并在随后的几年中不断完善和提升。通过严格的质量控制流程和持续的品质改进活动,岱恩电子的产品品质得到了客户的广泛认可,并在市场上建立了良好的口碑。
- 环保理念的贯彻与实践
随着全球环保意识的不断提高,岱恩电子积极响应环保号召,将环保理念贯穿于企业发展的全过程。公司不仅取得了ISO14001环境管理系统认证,还严格遵守RoHS及Reach等欧盟环保标准,确保产品从原材料采购到生产过程的环保性。此外,岱恩电子还积极推广绿色制造技术,努力降低生产过程中的能源消耗和废弃物排放。
- 产品创新的突破与引领
在薄膜电容器领域,岱恩电子一直致力于产品创新和技术突破。公司不断投入研发资源,推出了一系列具有高性能、高可靠性和长寿命特点的薄膜电容器产品。其中,X2电容作为公司的明星产品之一,凭借其优异的电气性能和稳定性,赢得了众多客户的青睐。同时,岱恩电子还积极拓展产品线,将业务范围扩展至发光二极体等领域,进一步提升了公司的市场竞争力。
- 全球市场的拓展与布局
为了更好地服务全球客户,岱恩电子在中国大陆和台湾设立了完整的销售体系,并积极拓展海外市场。公司通过与全球知名企业的合作与交流,不断提升自身的品牌影响力和市场占有率。同时,岱恩电子还注重本地化服务,根据不同地区的市场需求和文化特点,提供定制化的产品和服务解决方案,赢得了客户的信任和赞誉。
在20世纪初,Bipolar Integrated Technology Inc(以下简称BIT)由几位热衷于电子技术的工程师创立。他们专注于双极型集成电路的研发,这一领域在当时尚未被充分开发。经过无数次的试验和失败,BIT团队终于成功研发出了一款性能稳定、功耗较低的双极型集成电路,这一技术突破为BIT在行业内赢得了初步声誉。
随着产品线的不断丰富和技术实力的日益增强,GStek开始积极拓展国内外市场。公司采取多元化的市场策略,针对不同客户群体提供定制化的解决方案。同时,GStek还注重品牌建设,通过参加各类行业展会、举办技术研讨会等方式,加强与业界的交流与合作,提升品牌知名度和影响力。这些努力使得GStek的产品广泛应用于各类电子产品中,包括智能手机、平板电脑、笔记本电脑等移动设备以及家电、工控等领域。
长工微电子在产品研发上不断取得突破。其中,IS6608芯片实现了多相电源并联输出最高到200A,这是国产电源芯片第一家可以用于服务器CPU多相并联电源解决方案,打破了欧美电源芯片厂商在多相电源的垄断。同时,IS6607 20A集成mos电源芯片,以3x4mm的体积实现了100w的功率输出,代表了当时芯片产业模拟电源的最高水平。这些产品广泛应用于服务器、台式机、笔电、基站、AI、LED显示屏等市场领域,为公司带来了丰厚的回报。
随着公司的发展,Amplitronix LLC逐渐在电子测量仪器领域站稳脚跟。然而,他们并没有满足于现状,而是继续投入研发,寻求技术突破。经过数年的努力,公司成功开发出一种具有颠覆性的新技术,显著提高了测量仪器的精度和稳定性。这一技术突破为公司赢得了更多的客户和市场份额,也为公司的未来发展奠定了坚实的基础。
作为一家具有社会责任感的企业,Emerson Embedded Power积极参与公益事业和社会活动。该公司通过捐赠资金、物资和技术支持等方式,帮助贫困地区的学校和社区改善基础设施和教育条件。同时,公司还积极倡导员工参与志愿服务活动,为社会贡献爱心和力量。
请注意,以上故事是基于Emerson Embedded Power在电子行业中的一般发展情况和特点而编写的概述性故事框架,并非具体的、详细的发展故事。如果需要更详细的信息或故事,建议直接查阅该公司的官方资料或相关新闻报道。
|
WINCE 中用C#语言,怎么把EXE文件中的ICO图标读出来? WINCE 中用C#语言,怎么把EXE文件中的ICO图标读出来? 我现在想把EXE中的图标读出来,然后再存存储为PNG的格式. 现在卡在不知道如何读取 EXE中的图标. 之前找到过一个方法,代码如下 using System.Runtime.InteropServices; [DllImport(\"shell32.d ...… 查看全部问答∨ |
单片机与AT24C64通信,我搞了好几天还是没能控制它的数据读写,没办法,只好求助于各位,24C64是I2C串行总线接口,有64K空间的EEPROM,单片机是STC89S52,我用程序模拟I2C协议,于24C64通信,请教高手,能不能把单片机与AT24C64之间的读写时序解释 ...… 查看全部问答∨ |
|
同样的程序代码 用VB编写能实现连接通信 而用EVB却一直出现连接问题 另外 Pocket PC模拟器 和PC通信是不是要先用ActiveSync这东西现同步起来才能通信? 这个东西学了2个月... 困扰了2个月... ...… 查看全部问答∨ |
在wince平台下,进程分配线程有没有上限,线程是运行的基本单位,但是总的来说系统的资源和运行时间都是有限制的。不指导在wince平台下,一个进程最大能够产生多少个子线程。在windows平台呢,在net托管框架下,也是有限制的吗,上限是多少?… 查看全部问答∨ |
|
在ST和NXP之间选择 我推荐负责人ST的,但是负责人说,ST最先搞cortex,相对成熟,但是ST在成都技术支持不如NXP。周立功在成都有分公司,有个团队在做。而ST只有利源一个增值代理商 遂选择NXP,尽管我用了1年多的STM32,但是还是被否决了… 查看全部问答∨ |
|
|
是否大家在DSP产品开发的过程中,会出现以下问题;内核处理能力不能满足应用要求;数据处理时的数据存储问题;单个芯片不能满足整个系统的要求,需要多个芯片之间做协同处理,但是系统之间的互联不够灵活。 通过此次培训课程,会让您了解 ...… 查看全部问答∨ |
http://item.taobao.com/item.htm?id=4010659248 淘宝链接 http://item.taobao.com/item.htm?id=4010659248 清仓处理, 256M nand 64M SDRAM 3.5 寸LCD 300RMB ,不议价! 本人是卖开发板的,信誉良好,快四钻了。也是一线wince/android ...… 查看全部问答∨ |
|
晒WEBENCH设计的过程+ 8至12V电源输入 5V2A输出 本来这个软件就是为了方便设计的,下面我来试一下8至12V电源输入 5V2A输出的大致过程,其中有很多细节,需要自己慢慢揣摩吧,毕竟这功能是强大的好啦,上图 … 查看全部问答∨ |



VI-27WIU






京公网安备 11010802033920号