有了前一篇文章的铺垫,基本上移植的工作就成功了一大半了,接下来要做的就是针对2410和2440的不同及不同开发板模块、接口的差异对2410的BSP进行修改工作。由于2410的寄存器基本吻合,所以头文件不改也没问题,这里我主要还是参考了Etual大牛的博客做了一下工作:
1.修改了时钟(PLL设置)。
libcpuarms3c24xxclocksupport.c
修改get_FCLK
由于2440 的PLL计算公式不同,在原来的基础上乘以2 就行了。修改为
return((BSP_OSC_FREQ * m * 2) / (p << s));
2.对启动代码进行修改。libbsparmsbc2440startstart.S
删除 GamePark magic sequence
修改启动代码,我是用GDB的话,则会根据ELF文件自动下载的,RTEMS 的运行地址是 0x30000100 添加初始化
(1)关闭看门狗,关闭所有中断,SVC模式
(2)设置PLL,将 FCLK : HCLK : PCLK 设置为 200 : 100 : 50 MHZ
(3)清除 .bss 段的内容。
(4)接着做RTEMS 原来的初始化
添加到内容如下
/*
* Etual add
*/
#define WTCON 0x53000000
#define INTMSK 0x4A000008
#define INTSUBMSK 0x4A00001C
/*
* watching dog off
*/
ldr r0, =WTCON
mov r1, # 0x0
str r1, [r0]
/*
* mask all IRQs by setting all bits in the INTMR - default
*/
mov r1, # 0xffffffff
ldr r0, =INTMSK
str r1, [r0]
ldr r1, =0x7ff
ldr r0, =INTSUBMSK
str r1, [r0]
/*
* FCLK:HCLK:PCLK = 1:2:4
* default OSC = 12MHZ
* FCLK : HCLK : PCLK = 200 : 100 : 50 MHZ
*/
mov r1, # 0x4C000000
adr r2, pll_cfg_val
add r3, r1, # 7*4
1:
ldr r4, [r2], #4
str r4, [r1], #4
cmp r1, r3
bne 1b
mrc p15, 0, r1, c1, c0, 0
orr r1, r1, #0xc0000000
mcr p15, 0, r1, c1, c0, 0
b clear_bss
pll_cfg_val:
.long 0xFFFFFFFF @LOCKTIME 0x4C000000
.long 0x0005C012 @MPLLCON
.long 0x00038021 @UPLLCON
.long 0x001FFFF0 @CLKCON
.long 0x00000004 @CLKSLOW
.long 0x00000003 @CLKDIVN
.long 0x00000000 @CAMDIVN
/*
* clear .bss
*/
clear_bss:
ldr r0, =_axf_bss_start
ldr r1, =_axf_bss_end
mov r2, #0x00000000
b clbss_2
clbss_l:
str r2, [r0]
add r0, r0, #4
clbss_2:
cmp r0, r1
bne clbss_l
3.修改串口相关的代码
static ssize_t uart_write(int minor, const char *buf, size_t len)
函数下修改这里:
while(!(rUTRSTAT0 & 0x4)) //原来这里为0x2
{
...
}
初始化函数不使用FIFO直接使用死循环模式。
static void uart_init(int minor)
{
int i;
unsigned int reg = 0;
rGPHCON |= 0xa0;
rGPHUP = 0x0c;
/* enable UART0 */
rCLKCON|= (1<<10);
/* value is calculated so : (int)(PCLK/16./baudrate) -1 */
reg = get_PCLK() / (16 * 115200) - 1;
/* FIFO enable, Tx/Rx FIFO clear */
rUFCON0 = 0x0;
rUMCON0 = 0x0;
/* Normal,No parity,1 stop,8 bit */
rULCON0 = 0x3;
/*
* tx=level,rx=edge,disable timeout int.,enable rx error int.,
* normal,interrupt or polling
*/
rUCON0 = 0x05;
rUBRDIV0 = reg;
for (i = 0; i < 100; i++);
}
主要修改UART0口的初始化就行了,不用FIFO,主要发送的时候判断。
4.sbc2440/startup/bspstart.c 屏蔽掉设置时钟频率,设置SDRAM控制器到代码,因为时钟已经在 start.S 中做了。而内存控制器在gdb的启动脚本中做,在debug开发不许要设置。
bsp_start_default 函数中
/* setup clocks */
// rCLKDIVN = M_CLKDIVN;
// rMPLLCON = ((M_MDIV<<12)+(M_PDIV<<4)+M_SDIV);
/* setup rREFRESH
* period = 15.6 us, HCLK=66Mhz, (2048+1-15.6*66)
*/
// REFCNT = 2048+1-(15.6*get_HCLK()/1000000);
// rREFRESH = ((REFEN<<23)+(TREFMD<<22)+(Trp<<20)+(Trc<<18)+(Tchr<<16)+REFCNT);
5.完成之后 make install 安装
上一篇:RTEMS在S3C2440上的移植-(3)
下一篇:ARM9 SWI软件中断
推荐阅读
史海拾趣
在Harry Hoffman的领导下,Hoffman Engineering不断扩展其产品线。从最初的压力机安全保护装置,公司逐渐研发出蒲公英掘具、碟靶投掷器、厨房用电动搅拌器等一系列创新产品。这些产品不仅丰富了Hoffman Engineering的市场布局,也展现了公司在不同领域的技术实力。特别是Hoffman的机柜系列产品,如接线箱和电源插座,逐渐成为市场上的热门产品,为公司带来了稳定的收入来源。
Datalogic公司自成立以来,一直致力于技术创新。在1990年代,随着电子行业的快速发展,对高精度数据采集和处理的需求日益增加。Datalogic凭借其深厚的技术积累,成功研发出一系列高性能的条码扫描器和数据采集器,这些产品凭借其高效、稳定的表现,迅速在电子行业占据了一席之地。
为了进一步提升公司的竞争力和市场地位,富芯森美积极寻求资本市场的支持。通过上市融资等方式,公司获得了充足的资金支持,为技术研发、市场拓展和产能扩张提供了有力保障。同时,资本市场的关注也进一步提升了富芯森美的品牌价值和市场影响力。在资本市场的助力下,富芯森美实现了快速发展,成为了电子行业中一颗璀璨的明星。
除了提供优质的产品外,AEMC Instruments公司还注重服务升级和客户关怀。公司建立了完善的客户服务体系,提供售前咨询、售后技术支持等全方位服务。同时,公司还定期举办技术培训和交流活动,帮助客户更好地使用和维护产品。这些举措不仅提高了客户的满意度和忠诚度,也促进了公司与客户的长期合作关系。
以上五个故事是基于AEMC Instruments公司的发展情况所做出的概括性描述,旨在展示公司在电子行业中的成长历程和取得的成就。当然,具体的发展故事还需要根据公司的实际情况和历史记录来深入挖掘和呈现。
AE&ST公司自创立之初,就深知技术创新是电子行业的核心竞争力。公司投入大量资源进行研发,不断探索新的半导体材料和生产工艺。在一次偶然的实验中,AE&ST的研发团队发现了一种新型半导体材料,这种材料在能效和稳定性方面表现出色。公司迅速将这一发现转化为产品,并推向市场。新产品一经推出,便因其卓越的性能获得了市场的广泛认可,AE&ST公司因此获得了巨大的商业成功。
c#serialport读不到ReadLine值(串口通信) using System; using System.Linq; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Text; using System.Windows.Forms; using System.IO.Ports; using System.T ...… 查看全部问答∨ |
|
鉴于成本控制的原因。初步打算选用成品机壳。找了几家机壳厂,初步选择了一家,大家看看。机壳与面板都是铝合金的。 我按照厂家淘宝上面的简单尺寸图画了一下三维效果图,面板布置也是我自己的一厢情愿。不一定合理。大家多提提意见和建议。 晚上 ...… 查看全部问答∨ |
|
求助SATA的IP核,最好是Synopsys SATA IP(愿付重金) 在学校做毕业设计,被老板要求在Xilinx的FPGA上完成SATA的操作,急需SATA的HOST与DEVICE的IP核。由于可以使用部分项目经费,所以重金求购SATA IP核。在网上查了一下,有"Synopsys Sata IP",“DesignWare IP SATA Complete Solution”等等均可 ...… 查看全部问答∨ |