转自:精工小匠
一、在IPNC_RDK_4.1.0中的开发包,主要分两大部分:dvsdk_ipnctools、ipnc_appipnc_rdk;
dvsdk_ipnctools是ti官方提供的各种ipnc开发下的驱动程序、dsp算法、psp开发包等;
ipnc_appipnc_rdk主要是appro公司开发的IPNC的应用程序;
所以,单纯的按照appro给的开发demo做出来的IPNC
的硬件直接就可以灌IPNC_RDK_4.1.0中的医用程序,不需要任何改动即可运行起来,并且可以在pc客户端用web
gui的形式访问到ipnc的实时监控画面,并且有附带的控制功能。
而,本次开发的IPNC 的硬件与appro给出的demo硬件方案大不相同;
1.串口选用UART0;
2.nand在DM368的主芯片下选用的是NAND512的小页的nand flash 作为存储器;
3.网口的芯片采用RTL8201的PHY 方案;
4.内存芯片选用HYNY的DDR2-800的存储芯片;
所以需要修改的地方:
a.首先,串口的UART0作为输出调试串口,这样在u-boot、kenerl中的头文件,配置文件都要修改为uart0的串口;
具体位置u-boot中incllude/configs/davinci_dm368_ipnc.h 中的#define
CONFIG_CONS_INDEX 2 修改为#define CONFIG_CONS_INDEX 1 即可,注意#define
CFG_NS16550_CLK 24000000时钟平率一并修改,否则将出现串口输出乱码;
kernel中的位置为/arch/arm/mach-davinci/board-dm368-ipnc.c
中的修改,也可以在u-boot中的传递参数中添加ttyS0即可;
b.要修改在DM368为主芯片下的nand flash为小页的mlc存储器;
要在定义DM365的宏的nand.c的文件中添加DM368的宏即可驱动小页的nand flash,此处是在u-boot中修改;
在内核中要修改#define NAND_BLOCK_SIZE SZ_16K 为小页的块容量为16K
的即可,还有根据小页的内存量要修改linux系统下的nand flash分区问题;此处分区为
80 static struct mtd_partition davinci_nand_partitions[] = {
81
{
82 /* UBL (a few copies) plus U-Boot */
83 .name
= 'bootloader',
84 .offset = 0,
85 .size = 32
* NAND_BLOCK_SIZE, //24 change by yecx
86 .mask_flags
= 0,
87 }, {
88 /* U-Boot environment */
89
.name = 'params',
90 .offset =
MTDPART_OFS_APPEND,
91 .size = 96 *
NAND_BLOCK_SIZE,
92 .mask_flags = 0,
93 }, {
94
.name = 'kernel',
95 .offset =
MTDPART_OFS_APPEND,
96 .size = SZ_2M +
SZ_2M,
97 .mask_flags = 0,
98
99 }, {
100
.name = 'filesystem1',
101 .offset =
MTDPART_OFS_APPEND,
102 .size = SZ_16M + SZ_8M
, //16 change by yecx
103 .mask_flags =
0,
104 }, {
105 .name = 'data1',
106
.offset = MTDPART_OFS_APPEND,
107 .size =
SZ_2M,
108 .mask_flags = 0,
109 },{
110
.name = 'filesystem2',
111 .offset =
MTDPART_OFS_APPEND,
112 .size = SZ_16M + SZ_8M
, //SZ_32M + SZ_8M change by yecx
113
.mask_flags = 0,
114 },
115 {
116
.name = 'data2',
117 .offset =
MTDPART_OFS_APPEND,
118 .size =
MTDPART_SIZ_FULL,
119 .mask_flags = 0,
120 },
此处为修改的nand flash的移植;
c.修改网口芯片PHY的移植;
在u-boot中的为修改PHY的物理地址位PHY_NUM = 0X1F
,并且在u-boot中要添加以下代码,来控制PHY的复位脚,具体在文件board/davinci/dm368_ipnc/dm368_board.c
的函数中int misc_init_r (void)添加;
111 REG(0x01c40008) |= 0x00001000;
112 REG(0x01c67038) &=
0xfffbffff;
113
114 for( i=0 ; i<20 ; i++)
115
{
116 REG(0x01c6703C) &= 0xfffbffff;
117
udelay(1000);
118 REG(0x01c6703C) |= 0x00040000;
119 }
d.DDR2中的主要是时间参数,对于DDR2-800只是型号更换,所以不必更改参数;
以上为必须修改项,还有一些在编译过程中需要注意的项目,无需赘述了。