#include "regs.h"
void enable_mmu(unsigned long ttb);
void init_ttb(unsigned long *ttb_base);
void mmap(unsigned long *ttb_base, unsigned long va, unsigned long pa);
void memset(char *buf, char ch, int size);
void memcpy(char *dst, char *src, int size);
void do_irq(unsigned long regs[]);
void (*printf)(char *, ...) = 0x43e11434;
void main(void)
{
unsigned long vector_base = 0xffff0000;
unsigned long tt_base = 0x73000000;
unsigned long *pdo_irq = 0x75000000;
extern unsigned long vectors_start, vectors_end;
memset(tt_base, 0x00, 16 * 1024);
mmap(tt_base, vector_base, 0x70000000);
enable_mmu(tt_base);
memcpy(vector_base, vectors_start, 0x100);
*pdo_irq = do_irq;
__asm__ __volatile__ (
"cpsie i\n"
);
//--------------------------------------------------
ICCICR_CPU0 = 1;
ICCPMR_CPU0 = 0xff; //Priority Unmask All Interrupt
ICDDCR = 1;
//------ Watchdog IRQ ID is 75------------------
ICDIPR18_CPU0 = ~(0xff << 24);// the Zero is Highest priority
ICDIPTR18_CPU0 = (1 << 24); // for CPU0 , refer PG815
ICDISER2_CPU0 = (1 << 11); // enable interrupt 0 --- SGI0
//---------- Configure WDT ----------------------
// 200000000 / 128 / 256 = 6103,即频率6103
WTCNT = 6103; // 1秒钟减完
WTDAT = 6103; // WTCNT 1秒钟减完后把WTDAT值装入WTCNT中继续减
WTCON = (1 << 2) | (3 << 3) | (1 << 5) | (0xff << 8) ; //启动看门狗
}
void do_irq(unsigned long regs[])
{
printf("watchdog: wang wang wang ....\n");
WTCLRINT = 0;
}
void enable_mmu(unsigned long ttb)
{
unsigned long c1_flags;
init_ttb(ttb);
c1_flags = 1 | (1 << 3) | ( 1 << 11) | ( 1 << 13) | (1 << 28);
__asm__ __volatile__ (
"mvn r0, #0 \n"
"mcr p15, 0, r0, c3, c0, 0\n"
"mcr p15, 0, %1, c2, c0, 0\n" //configure ttb
"mrc p15, 0, r0, c1, c0, 0\n"
"orr %0, r0, %0\n"
"mcr p15, 0, %0, c1, c0, 0\n" //enable mmu
:
: "r" (c1_flags), "r" (ttb)
: "r0"
);
}
void init_ttb(unsigned long *ttb_base)
{
unsigned long va, pa;
for (va = 0x00000000; va < 0x10000000; va += 0x100000) { //Others
pa = va;
ttb_base[ va >> 20] = (pa & 0xfff00000) | 2;
}
for (va = 0x10000000; va < 0x14000000; va += 0x100000) { //SFR
pa = va;
ttb_base[ va >> 20] = (pa & 0xfff00000) | 2;
}
for (va = 0x40000000; va < 0x80000000; va += 0x100000) { //DRAM
pa = va;
ttb_base[ va >> 20] = (pa & 0xfff00000) | 2;
}
}
void mmap(unsigned long *ttb_base, unsigned long va, unsigned long pa)
{
ttb_base[ va >> 20] = (pa & 0xfff00000) | 2;
}
void memset(char *buf, char ch, int size)
{
int i;
for (i = 0; i < size; i ++)
buf[i] = ch;
}
void memcpy(char *dst, char *src, int size)
{
int i;
for (i = 0; i < size; i ++)
dst[i] = src[i];
}
__asm__ (
"vectors:\n"
"b reset\n"
"b und\n"
"b swi\n"
"b pre_abt\n"
"b dat_abt\n"
".word 0\n"
"b irq\n"
"b fiq\n"
"reset:\n"
"und:\n"
"mov sp, #0x74000000\n"
"stmfd sp!, {r0-r12, lr}\n"
"mov r0, sp\n"
"mov r3, #0x74000000\n"
"ldr r3, [r3]\n"
"blx r3\n"
"mov sp, #0x74000000\n"
"ldmea sp, {r0-r12, pc}^\n"
"swi:\n"
"pre_abt:\n"
"dat_abt:\n"
"fiq:\n"
"irq:\n"
"mov sp, #0x75000000\n"
"sub lr, lr, #4 \n"
"stmfd sp!, {r0-r12, lr}\n"
"mov r0, sp\n"
"mov r3, #0x75000000\n"
"ldr r3, [r3]\n"
"blx r3\n"
"mov sp, #0x75000000\n"
"ldmea sp, {r0-r12, pc}^\n"
"EOV:\n"
"vectors_start:\n"
".word vectors\n"
"vectors_end:\n"
".word EOV\n"
);
====================================================================
Makefile文件:
default:
arm-linux-gcc -c test.c -o test.o
arm-linux-ld -Ttext=0x70003000 test.o -o test
arm-linux-objcopy -O binary test test.bin
clean:
rm -f test.o test test.bin *~
===============================================================
上一篇:Tiny4412中断控制器(GIC)之PWM
下一篇:Tiny4412中断控制器(GIC)之外部中断
推荐阅读
史海拾趣
由于要求提供5个关于电子行业里Components Corporation公司发展起来的相关故事,并且每个故事字数至少500字,这里我将先给出1个故事的示例,若您确实需要更多故事,可以在之后输入继续。
Components Corporation的崛起之路:从初创到行业领军者
在电子行业的浩瀚星空中,Components Corporation(以下简称CC公司)犹如一颗璀璨的明星,凭借其卓越的技术和不懈的努力,逐渐从初创企业成长为行业领军者。
CC公司的创始人在上世纪末看到了电子元器件市场的巨大潜力,决心投身于这一充满挑战与机遇的领域。初创时期,公司面临着资金短缺、技术瓶颈和市场竞争等多重困难。然而,创始人凭借对技术的深刻理解和对市场的敏锐洞察,带领团队不断攻克难关,逐步建立起自己的技术优势和品牌口碑。
随着技术的不断进步和市场的不断扩大,CC公司开始加大研发投入,推出了一系列具有创新性和竞争力的电子元器件产品。这些产品不仅满足了市场对于高性能、高可靠性的需求,还为客户提供了更加便捷、高效的解决方案。同时,公司还积极与上下游企业合作,构建起了完善的供应链体系,确保了产品的稳定供应和优质服务。
在市场竞争日益激烈的今天,CC公司始终坚持以客户为中心的经营理念,不断提升服务质量和客户满意度。公司通过建立完善的销售网络和客户服务体系,及时了解客户需求和反馈,不断优化产品和服务。此外,公司还积极参与国际交流与合作,引进国际先进技术和管理经验,不断提升自身的综合实力和核心竞争力。
经过多年的发展,CC公司已经成为电子行业的一颗璀璨明星。它不仅在电子元器件领域取得了显著成就,还为整个电子行业的发展做出了重要贡献。未来,CC公司将继续秉承创新、卓越、服务的经营理念,不断开拓新的市场领域和技术领域,为电子行业的繁荣发展贡献更多力量。
若您想要探索更多关于Components Corporation公司的故事,随时可以继续输入。
随着业务的发展,AirBorn开始将目光投向全球市场。公司积极参与国际电子展会,与全球各地的客户建立合作关系。同时,AirBorn还加大了对研发和生产设备的投入,提升产品质量和生产效率。这些举措使得AirBorn的产品在全球范围内赢得了良好的声誉,公司也逐渐成长为一家具有全球影响力的电子连接器制造商。
博通集成自成立以来,始终致力于无线通讯技术的研发与创新。公司团队不断攻克技术难关,推出了多款具有市场竞争力的产品。其中,公司自主研发的首款Wi-Fi宽带收发样片在2015年成功通过测试,这一技术突破为公司在无线通讯领域的发展奠定了坚实基础。此后,公司不断推出创新产品,涵盖无线数传芯片和无线音频芯片等多个领域,广泛应用于智能家居、智能交通等领域。
博通集成自成立以来,始终致力于无线通讯技术的研发与创新。公司团队不断攻克技术难关,推出了多款具有市场竞争力的产品。其中,公司自主研发的首款Wi-Fi宽带收发样片在2015年成功通过测试,这一技术突破为公司在无线通讯领域的发展奠定了坚实基础。此后,公司不断推出创新产品,涵盖无线数传芯片和无线音频芯片等多个领域,广泛应用于智能家居、智能交通等领域。
博通集成深知技术创新是企业发展的核心动力。因此,公司始终保持高额的研发投入,不断推动技术创新和产品研发。公司拥有一支专业的研发团队,具备强大的研发实力和创新能力。通过持续的研发投入和技术创新,博通集成在无线连接芯片设计领域取得了显著的成果和进展。
APTA Group Inc在企业管理方面同样敢于创新。公司引入了一套先进的管理系统,通过数据分析和智能化决策,大大提高了工作效率和决策准确性。同时,公司还注重员工培训和激励,打造了一支高效、专业的团队。这些创新的管理举措,为APTA的稳健发展提供了坚实保障。
这是一款纯绿色软件,不用安装,解压后直接双击"Foxit Reader.exe”就能运行了,而且运行一次后会自动建立关联,以后再双击PDF文档就行了,就能直接阅读PDF文档了。比Adobe Reader阅读器小多了,功能也不少啊。所以,推荐给大家下载使用吧。 [ 本 ...… 查看全部问答∨ |
|
大一在幼稚中度过 我大一就开始作电子,因高两届的张哥的一句话,我开始学单片机,七天边学边做,我做好第一个题目(实现一个他们称做"求爱机"的东西),但是现在他还躺在那,还没有实现他的目的,呵呵。他根本没有跑起来,除 ...… 查看全部问答∨ |
深圳市精视控制技术有限公司,由专业从事工业自动化系统硬件方案和软件工程师组成的研发客户团队。通过专业知识积累了多年的应用经验,服务广大工业自动化用户,熟练现场实际应用提出最佳解决方案。特别针对机器视觉系统开发的无风扇视觉控制器,更 ...… 查看全部问答∨ |
产品定位:3700系列产品与吉时利2750 (Integra)及7002解决方案的对比 3700系列产品定位于提供中高通道数量的开关系统和/或多通道测量系统解决方案。目前,我们提供具有类似能力的两个产品:7002型开关主机和2750型Integra系列产品(参见图1)。 如果仅用于开关应用,3706-S型产品能够提供超乎7002型的出众解决 ...… 查看全部问答∨ |
|
协议栈例程simpleApp中为什么sensor重复进行加网流程 协议栈的网络初始化主要是在ZDApp.c里面做的,如果未设置DEV_HOLD,设备会自动循环初始化网络,直到加入网络 如下 ZDApp_Init()--> ZDOInitDevice( 0 )-->ZDApp_NetworkInit()(在此函数里面启动ZDO层事件ZDO_NETWORK_INIT)。 UI ...… 查看全部问答∨ |
|
作者July 原文出处 http://www.csdn.net/article/2011-01-12/289993 细数二十世纪最伟大的十大算法 译者:July 二零一一年一月十日 ------------------------------------参考文献: The Best of the 20th Century: Editors Name ...… 查看全部问答∨ |