DSP

IPNC开发笔记——关于IPNC_RDK_4.1.0的分析

2019-07-13 17:55发布

一、在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只是型号更换,所以不必更改参数;
以上为必须修改项,还有一些在编译过程中需要注意的项目,无需赘述了。 转载:http://bbs.21ic.com/blog-627217-117376.html