热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

uclinux(2.6内核)在s3c44b0上的移植

uclinux(2.6内核)在s3c44b0上的移植--Linux通用技术-Linux编程与内核信息,下面是详情阅读。
暑假里,将实验室的一台ev40的实验箱带回家,准备做些实验。
首先介绍一下与移植相关的我的实验箱的硬件信息:
cpu: Samsung 44b0x
Nor flash: SST39vf160 (1M x 16bit)
Nand flash: K9F2808
Sdram: HY57V65160B (4M x 16bit)
网络芯片: RTL8019AS

1,下载相关内核源码
uClinux-dist-20040408.tar.gz
linux-2.6.9.tar.bz2
linux-2.6.9-hsc0.patch.gz

解压源码:
tar xzvf uClinux-dist-20040408.tar.gz
tar jxvf linux-2.6.9.tar.bz2
gunzip linux-2.6.9-hsc0.patch.gz
patch -p0 mv linux-2.6.9 uClinux-dist
cd uClinux-dist
rm -rf linux-2.6.x
mv linux-2.6.9 linux-2.6.x

2,下载并安装交叉编译环境
arm-uclinux-tools-base-gcc3.4.0-20040713.sh

安装:
./arm-uclinux-tools-base-gcc3.4.0-20040713.sh
mv arm-uclinux-tools /usr/local
在~/.bash_profile文件中添加该编译工具的PATH

3,修改源码中与编译工具有关的文件:
修改vendor/config/armnommu/config.arch文件
MACHINE = arm
ARCH = armnommu
CROSS_COMPILE = arm-uclinux-
CROSS = $(CROSS_COMPILE)

修改linux-2.6.x目录下的Makefile文件,添加如下内容:
ARCH = armnommu
CROSS_COMPILE = arm-uclinux-

4,增加44b0x相关的目录与文件:
cd vendors/Samsung
mkdir 44b0x
将Samsung/4510B下的所有文件(config.linux-2.4.x和config.vendor-2.4.x除外)copy到44b0x目录下。
cp linux-2.6.x/arch/armnommu/configs/s3c44b0x_defconfig vendors/Samsung/44b0x/config.linux-2.6.x
修改 44b0x/rc文件,将第2行和第4行中的ram0改成ram1,根据板子情况适当修改其他行。

5,修改linux-2.6.x/arch/armnommu/boot/compressed/head-s3c44b0.S文件。(280行附近)
ldr r2, S3C44B0_PROCESSOR_TYPE
str r2, [r6]
ldr r2, S3C44B0_MACH_TYPE
str r2, [r9]
改为:
ldr r6, S3C44B0_PROCESSOR_TYPE
ldr r7, S3C44B0_MACH_TYPE

6,修改uClinux-dist/linux-2.6.x/include/asm-armnommu/system.h文件(有些板子需要更改,而我的ev40板不需要改)
将vectors_base改为(CONFIG_DRAM_BASE+0x8)
我的ev40板不用改vectors_base值,其值是CONFIG_DRAM_BASE (改了后会出现PID错误,死在PID那行)


7,增加串口驱动。内核源代码中只带了44b0的简易串口驱动。要自己编写串口驱动程序:
(1), 增加文件。(文件可参考4510的串口驱动,有需要的请与我联系)
linux-2.6.x/drivers/serial/serial_s3c44b0.c
linux-2.6.x/include/asm-armnommu/arch-s3c44b0x/uart.h
(2),修改linux-2.6.x/drivers/serial/Kconfig,添加44B0X串口相关内容
config SERIAL_S3C44B0X
bool 'S3C44B0X Serial Support'
default y
select SERIAL_CORE
help
Samsung S3C44B0X Chips has built-in serial controler
config SERIAL_S3C44B0X_CONSOLE
bool "Support for console on S3C44B0X Serial port"
depends on SERIAL_S3C44B0X=y
select SERIAL_CORE_CONSOLE
help
Allow selection of the S3C44B0X on-board serial ports for use as
an virtual console.
(3),修改linux-2.6.x/drivers/serial/Makefile,添加44B0x的相关内容:
obj-$(CONFIG_SERIAL_S3C44B0X) += serial_s3c44b0.o
(4),修改linux-2.6.x/include/linux/serial_core.h,在其中加入PORT_S3C44B0的定义:
#define PORT_S3C44B0 62
(5),修改linux-2.6.x/arch/armnommu/mach-s3c44b0x/driver中Makefile和Kconfig文件,注释掉原来与简易串口相关的内容。
(6),linux-2.6.x/drivers/serial/serial_s3c44b0.c中将有
CONFIG_SERIAL_S3C44B0_CONSOLE改为:CONFIG_SERIAL_S3C44B0X_CONSOLE
并设置波特率为正确的值。
(7)记得要根据自己板子配置serial_s3c44b0.c中的static void __s3c44b0_init(struct uart_port *port, int baud)函数中的寄存器的值。

8,增加网卡驱动。我的网络芯片用的是RTL8019AS,不出意外的话,市面上所有44B0板子上都是用的该芯片,只是有的用的是8bit,有的用的是16bit模式,驱动也要做相应的改动才行。我的是用的8bit模式。
这里只讲一下要注意的地方:网卡的中断号,中断的初始化,网卡的基址等等。
网卡驱动后,可以配置一下NFS和FTP来测试一下网络。
(1).配置内核:
进入File Systems --->Network file systems --->选项选中:
  • NFS file system support
  • Provide NFSv3 client support
    (2).配置用户选项
    进入Network Applications ---> 选项选中:
  • portmap
    进入BusyBox --->选项选中:
  • mount
  • mount:support NFS mounts
  • umount
    (3). 在linux主机上,配置NFS server
    (1),编辑/etc/exportfs文件,添加如下内容:
    /test *(rw, sync, no_root_squash)
    (2),输入以下命令:
    #service portmap start
    #service nfs start
    #exportfs -rv (重新共享/etc/exports中共享出来的目录)
    #showmount -e (查看所有共享目录)
    (4).编译内核,下载到开发板运行时,用如下方法进行NFS挂接
    输入如下命令:
    #portmap& (记住一定要运行该命令,否则NFS客户机无法找到从NFS服务器共享的目录)
    #mount ?t nfs 192.168.0.110:/test /mnt
    #ls /mnt
    完成网卡驱动后,测试ftp,出现问题:
    在测试ftp时,登录进去后运行ls命令和其他命令,网络会变得很慢,bye命令后会出现错误:
    skput:over: 0c01e530:80 put: dev:eth0221 Goodbye. 然后用ping命令来测试网络,网络延时会变得很长。


    9,boa web server的移植。
    (1),配置用户选项时,进入Network Applications ---> 选项选中:boa
    进入lib选项,选中build libZ
    (2),修改uClinux-dist/user/boa/src/defines.h文件,添加定义 #define SERVER_ROOT "/home/web"
    (3),修改uClinux-dist/user/boa/examples/boa.conf文件
    Port 80
    User 0
    Group 0
    ServerAdmin root@localhost
    DocumentRoot /home/web/html
    UserDir public_html
    DirectoryIndex index.html
    KeepAliveMax 100
    KeepAliveTimeout 10
    MimeTypes /home/web/mime.types
    DefaultType text/plain
    ScriptAlias /cgi-bin /home/web/cgi-bin
    ScriptAlias /index.html /home/web/html/index.html
    以上就是boa.conf的最简单配置,其他都可屏蔽掉,有些内容不屏蔽掉会出错。
    (4),修改romfs/etc/inittab文件,添加如下内容:
    boa:unknown:/bin/boa -c/home/web
    (5),将uClinux-dist/user/boa/examples/boa.conf和mime.types两个文件copy到romfs/home/web。
    这样配置后,html文件全部放到/home/web/html文件夹里,cgi文件放到/homt/web/cgi-bin文件夹里,可以将html和cgi-bin文件夹设成nfs文件系统,这样可以马上测试编写的网页程序。(mount -t nfs 192.168.0.100:/web /home/web/html)
  • 推荐阅读
    • Nginx使用AWStats日志分析的步骤及注意事项
      本文介绍了在Centos7操作系统上使用Nginx和AWStats进行日志分析的步骤和注意事项。通过AWStats可以统计网站的访问量、IP地址、操作系统、浏览器等信息,并提供精确到每月、每日、每小时的数据。在部署AWStats之前需要确认服务器上已经安装了Perl环境,并进行DNS解析。 ... [详细]
    • 在Docker中,将主机目录挂载到容器中作为volume使用时,常常会遇到文件权限问题。这是因为容器内外的UID不同所导致的。本文介绍了解决这个问题的方法,包括使用gosu和suexec工具以及在Dockerfile中配置volume的权限。通过这些方法,可以避免在使用Docker时出现无写权限的情况。 ... [详细]
    • 本文介绍了数据库的存储结构及其重要性,强调了关系数据库范例中将逻辑存储与物理存储分开的必要性。通过逻辑结构和物理结构的分离,可以实现对物理存储的重新组织和数据库的迁移,而应用程序不会察觉到任何更改。文章还展示了Oracle数据库的逻辑结构和物理结构,并介绍了表空间的概念和作用。 ... [详细]
    • 本文介绍了Hyperledger Fabric外部链码构建与运行的相关知识,包括在Hyperledger Fabric 2.0版本之前链码构建和运行的困难性,外部构建模式的实现原理以及外部构建和运行API的使用方法。通过本文的介绍,读者可以了解到如何利用外部构建和运行的方式来实现链码的构建和运行,并且不再受限于特定的语言和部署环境。 ... [详细]
    • 本文介绍了Linux系统中正则表达式的基础知识,包括正则表达式的简介、字符分类、普通字符和元字符的区别,以及在学习过程中需要注意的事项。同时提醒读者要注意正则表达式与通配符的区别,并给出了使用正则表达式时的一些建议。本文适合初学者了解Linux系统中的正则表达式,并提供了学习的参考资料。 ... [详细]
    • Ubuntu 9.04中安装谷歌Chromium浏览器及使用体验[图文]
      nsitionalENhttp:www.w3.orgTRxhtml1DTDxhtml1-transitional.dtd ... [详细]
    • 本文介绍了使用CentOS7.0 U盘刻录工具进行安装的详细步骤,包括使用USBWriter工具刻录ISO文件到USB驱动器、格式化USB磁盘、设置启动顺序等。通过本文的指导,用户可以轻松地使用U盘安装CentOS7.0操作系统。 ... [详细]
    • 本文介绍了Python高级网络编程及TCP/IP协议簇的OSI七层模型。首先简单介绍了七层模型的各层及其封装解封装过程。然后讨论了程序开发中涉及到的网络通信内容,主要包括TCP协议、UDP协议和IPV4协议。最后还介绍了socket编程、聊天socket实现、远程执行命令、上传文件、socketserver及其源码分析等相关内容。 ... [详细]
    • Linux服务器密码过期策略、登录次数限制、私钥登录等配置方法
      本文介绍了在Linux服务器上进行密码过期策略、登录次数限制、私钥登录等配置的方法。通过修改配置文件中的参数,可以设置密码的有效期、最小间隔时间、最小长度,并在密码过期前进行提示。同时还介绍了如何进行公钥登录和修改默认账户用户名的操作。详细步骤和注意事项可参考本文内容。 ... [详细]
    • 本文介绍了在rhel5.5操作系统下搭建网关+LAMP+postfix+dhcp的步骤和配置方法。通过配置dhcp自动分配ip、实现外网访问公司网站、内网收发邮件、内网上网以及SNAT转换等功能。详细介绍了安装dhcp和配置相关文件的步骤,并提供了相关的命令和配置示例。 ... [详细]
    • 本文介绍了使用AJAX的POST请求实现数据修改功能的方法。通过ajax-post技术,可以实现在输入某个id后,通过ajax技术调用post.jsp修改具有该id记录的姓名的值。文章还提到了AJAX的概念和作用,以及使用async参数和open()方法的注意事项。同时强调了不推荐使用async=false的情况,并解释了JavaScript等待服务器响应的机制。 ... [详细]
    • Centos7.6安装Gitlab教程及注意事项
      本文介绍了在Centos7.6系统下安装Gitlab的详细教程,并提供了一些注意事项。教程包括查看系统版本、安装必要的软件包、配置防火墙等步骤。同时,还强调了使用阿里云服务器时的特殊配置需求,以及建议至少4GB的可用RAM来运行GitLab。 ... [详细]
    • 禁止程序接收鼠标事件的工具_VNC Viewer for Mac(远程桌面工具)免费版
      VNCViewerforMac是一款运行在Mac平台上的远程桌面工具,vncviewermac版可以帮助您使用Mac的键盘和鼠标来控制远程计算机,操作简 ... [详细]
    • [译]技术公司十年经验的职场生涯回顾
      本文是一位在技术公司工作十年的职场人士对自己职业生涯的总结回顾。她的职业规划与众不同,令人深思又有趣。其中涉及到的内容有机器学习、创新创业以及引用了女性主义者在TED演讲中的部分讲义。文章表达了对职业生涯的愿望和希望,认为人类有能力不断改善自己。 ... [详细]
    • 推荐系统遇上深度学习(十七)详解推荐系统中的常用评测指标
      原创:石晓文小小挖掘机2018-06-18笔者是一个痴迷于挖掘数据中的价值的学习人,希望在平日的工作学习中,挖掘数据的价值, ... [详细]
    author-avatar
    可爱爱美女_815
    这个家伙很懒,什么也没留下!
    PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
    Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有