移植心得

最近几日在进行程序移植的工作。

原有平台为X86硬件+VXWORKS操作系统,新平台为PPC硬件+LINUX硬件平台。

经过几日的艰苦作战,终于移植成功。

 

在移植中遇到的问题主要有由于硬件平台字节序问题造成的不兼容问题,众所周知X86为小端系统;而PPC为大端系统在有字节流变为单字节变量时便会出现问题,比如二进制文件中的变量转换,接收报文的变量转换,已经变量转换为BUFF时都会出现上述问题。

比如二进制文件中的变量都是以小端方式保存的,在内存中是作为字节流方式的,比如一个变量0X0102在二进制文件中应为0X02 01,在内存中该文件的序列依然如此,当在小端系统中读出该变量时,按照小端方式组合即为0X0102;但是在大端系统中将被组合为0X0201,所以会出现错误。

 

由于操作系统造成的问题,由于VXWORKS没有进程的概念,只有任务的概念;而且内存是全局的,每个任务都可以访问到全局的内存,这就造成了在移植到LINUX下存在问题。LINUX的每个进程之间的内存空间是独立的,如果需要访问就需要增加对应的共享内存,或其他一些方式。

 

还有其他一些考虑不全面的问题:串口进程强制退出时没有收回串口资源,造成重启进程后不能再次打开串口,目前通过重启硬件来解决问题;读文本文件在PPC平台上比在X86平台要严格很多,需要严格按照文本中字符的对应类型来读取,比如短整型一定要增加h,长的一定要增加l,文本文件的读取不存在大小端问题。

 

 

 

可移植性问题:大小端,硬件差异,系统差异。

 

你可能感兴趣的:(移植心得)