分享好友 系统运维首页 频道列表

移植linux3.7到nuc900系列开发板遇到的问题

Linux系统  2023-02-10 03:070

通过移植学习linux新版本内核,大概了解一下内核变化。

记录一下移植过程中遇到的问题或值得注意的地方。

1,添加一款arm9芯片的支持

首先修改\arch\arm\tools\mach-types文件

添加一行

w90p950evb		MACH_W90P950EVB		W90P950EVB

同目录下的脚本文件在编译内核时会根据该文件生成

\include\generated\mach-types.h

其中会生成类似这样的定义:
define MACH_TYPE_W90P950EVB           1923
#ifdef CONFIG_MACH_W90P950EVB
# ifdef machine_arch_type
#  undef machine_arch_type
#  define machine_arch_type	__machine_arch_type
# else
#  define machine_arch_type	MACH_TYPE_W90P950EVB
# endif
# define machine_is_w90p950evb()	(machine_arch_type == MACH_TYPE_W90P950EVB)
#else
# define machine_is_w90p950evb()	(0)
#endif

如果配置内核的时候打开了CONFIG_MACH_W90P950EVB,

machine_arch_type就等于上面定义的宏 1923。

系统启动时,在/arch/arm/kernel/setup.c中

void __init setup_arch(char **cmdline_p)
{
	struct machine_desc *mdesc;

	setup_processor();
	mdesc = setup_machine_fdt(__atags_pointer);
	if (!mdesc)
		mdesc = setup_machine_tags(__atags_pointer, machine_arch_type);
	machine_desc = mdesc;
	machine_name = mdesc->name;
......

调用

setup_machine_fdt(__atags_pointer);

该函数bootloader传过来相关参数,匹配machine type。 如果没传过来参数,调用

setup_machine_tags(__atags_pointer, machine_arch_type);

用1923来匹配,与之匹配的是用MACHINE_START初始化的结构体,在内核中搜索MACHINE_START……

MACHINE_START(W90P950EVB, "W90P950EVB")

第一个参数W90P950EVB通过宏会转换成MACH_TYPE_W90P950EVB,函数通过比较这个值和machine_arch_type进行匹配。

MACHINE_START宏网络上有详细分析,大致就是初始化了struct machine_desc结构体并放到相应的段.

值得注意的是struct machine_desc结构体有一定的变化,

unsigned int        phys_io;    /* start of physical io    */
       unsigned int        io_pg_offst;    /* byte offset for io */

移除,

unsigned long        boot_params;    /* tagged list        */

变成了

unsigned long        atag_offset;    /* tagged list (relative) */

变换关系 

boot_params=sdram物理地址+atag_offset,即地址变成了偏移.像nuc900系列,sdram地址0x00000000这两个值就相等.

这个值指示了bootloader传来的参数存放位置。

 

编译期间遇到问题:

warning: type defaults to 'int' in declaration of 'EXPORT_SYMBOL'

加头文件 include<linux/export.h>

warning: type defaults to 'int' in declaration of 'DECLARE_MUTEX'

从linux2.6.37 DECLARE_MUTEX 已从内核移除

可用DEFINE_SEMAPHORE 替换

error: 'PAGE_SHIFT' undeclared here (not in a function)

加头文件

#include<asm/page.h>

查看更多关于【Linux系统】的文章

展开全文
相关推荐
反对 0
举报 0
评论 0
图文资讯
热门推荐
优选好物
更多热点专题
更多推荐文章
linux下如何单独编译设备树? linux设备树是什么
答: make vendor/device_name.dtb  如: make freescale/fsl-1043a-rdb.dtb

0评论2023-02-10369

linux下安装redis3.2
这部分来自网络: http://blog.csdn.net/cuibruce/article/details/535015321.下载下载地址:http://www.redis.io/download选取当前最新版本3.2.1下载,上传到linux上,进行解压缩:[root@mongodb1 redis]# lsredis-3.2.1 redis-3.2.1.tar.gz进入redis-3.2.1目录

0评论2023-02-10962

终于解决了Linux下运行OCCI程序一直报Error while trying to retrieve text for error ORA-01804错误
终于解决了Linux下运行OCCI程序一直报Error while trying to retrieve text for error ORA-01804错误http://blog.csdn.net/zklth/article/details/7184032Linux下 和 Windows 下 Oracle Instant Client 的安装.http://fableking.iteye.com/blog/2115724 http

0评论2023-02-10637

linux lvm删除导致无法启动
要想编辑/etc/fstab文件,我们需要在系统中重新挂载根目录,使其具有可读写状态,使用如下命令:mount -o remount,rw /该条命令的作用是,以可读写的形式重新挂载根分区。然后再编辑/etc/fstab文件,就可以正常编辑。如下:

0评论2023-02-10931

linux中的strip命令简介------给文件脱衣服【转】
转自:http://blog.csdn.net/stpeace/article/details/47090255版权声明:本文为博主原创文章,转载时请务必注明本文地址, 禁止用于任何商业用途, 否则会用法律维权。作为一名Linux开发人员, 如果没有听说过strip命令, 那是很不应该的。 strip这个单词,

0评论2023-02-10728

linux下常用文件系统 linux支持的文件系统
不同的操作系统需要使用不同类型的文件系统,为了与其他操作系统兼容,以相互交换数据,通常操作系统都能支持多种类型的文件系统。Linux内核支持十多种不同类型的文件系统,下面对Linux常用的文件系统作一个简单介绍。ext2与ext3文件系统ext是第一个专门为Lin

0评论2023-02-10794

linux下将Python环境默认更改为Python3.6
步骤:#删除原来指向python2的软链接sudo mv /usr/bin/python /usr/bin/python.bak #/usr/local/python3.6/bin/python3.6 这个路径为实际的python3.6的bin文件夹下的Python3.6的路径,这个按照自己的实际情况进行更改 sudo ln -s /usr/bin/python3.6 /usr/bin

0评论2023-02-10852

Linux更改SSH默认端口 linux设置ssh端口
1.修改ssh配置文件  vim /etc/ssh/sshd_config  将 #Port 22 改为 Port 10023(更改的端口号最好在1024~65535间,不和其他服务端口冲突就ok)2.关闭防火墙  systemctl stop firewalld.service3.重启ssh服务  systemctl restart sshd.service4.新建ssh

0评论2023-02-10765

mongodb 对内存的占用监控 ——mongostat,linux系统可用的内存是free + buffers + cached
刚开始使用mongodb的时候,不太注意mongodb的内存使用,但通过查资料发现mongodb对内存的占用是巨大的,在本地测试服务器中,8G的内存居然被占用了45%。汗呀。 本文就来剖析一下mongodb对内存的具体使用方法,以及生产环境针对mongodb占大量内存的问题的解决

0评论2023-02-10641

linux grep命令参数及用法详解---linux管道命令grep
功能说明:查找文件里符合条件的字符串。语  法:grep [-abcEFGhHilLnqrsvVwxy][-A显示列数][-B显示列数][-C显示列数][-d进行动作][-e范本样式][-f范本文件][--help][范本样式][文件或目录...]补充说明:grep 指令用于查找内容包含指定的范本样式的文件,

0评论2023-02-10315

更多推荐