《linux安装、配置、移植、驱动程序编写详细教程.pdf》由会员分享,可在线阅读,更多相关《linux安装、配置、移植、驱动程序编写详细教程.pdf(84页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、MorewayTech 杭州茂葳科技所有 电话:13758237754 网址: Email: 地址:杭州下沙经济技术开发区学林街 608 号 Linux 操作系统的安装以及配置.3 1 如何安装 RedHat9.0.3 2 在 RedHat 中添加新用户.16 3 配置 PC 机 Linux 的 ftp 服务.16 4 配置 PC 机 Linux 的 telnet.17 5 建立交叉编译环境.17 6 编译内核.17 Linux 的移植.19 1 Bootloader 的移植.19 1.1 vivi 的配置与编译.19 1.2 配置和编译 vivi.20 1.3 vivi 代码分析.21 1.
2、4 vivi 的运行.21 1.5 启动代码执行流程图.45 1.6 vivi 的配置文件.45 2 Linux 内核移植.45 2.1 Linux 内核移植要点.45 2.2 平台相关代码结构.47 2.3 建立目标平台工程框架.47 2.4 建立目标平台代码框架.51 2.5 构建目标板代码.54 3 linux 2.6 内核配置选项详细说明.59 3.1 Code maturity level options-.59 3.2 General setup-.59 3.3 module support-.60 3.4 Block layer-.60 3.5 Processor type an
3、d features-.61 3.6 Power management options(ACPI,APM)-.63 3.7 Executable file formats-.68 3.8 Networking-.68 3.9 Device Drivers-.70 4 如何建立 yaffs 文件系统映像.72 Linux 外设驱动程序以及用户程序的编写.72 1、Helloworld.72 2、编写第一个驱动.72 3、GPIO 驱动.73 3.1、硬件分析.74 3.2 LED 驱动的编写.74 3.3 在内核源码中添加对 LED 驱动的支持.77 附录一 Linux 命令详解.78 More
4、wayTech 杭州茂葳科技所有 电话:13758237754 网址: Email: 地址:杭州下沙经济技术开发区学林街 608 号 文件列表 ls.78 目录切换 cd.78 删除 rm.78 复制 cp.79 移动 mv.79 比较 diff.79 回显 echo.79 文件内容查看 cat.79 时间日期 date.80 容量查看 du.80 查找 find.80 搜索 grep.80 编辑 vi.80 读取 man.81 重启 reboot.81 关机 halt.81 压缩与解压 tar.81 权限设置 chmod.81 网卡配置 ifconfig.81 创建设备 mknod.82 装
5、载模块 insmod.82 删除模块 rmmod.82 挂接 mount.82 卸载 umount.83 关于我们.83 联系方式.84 MorewayTech 杭州茂葳科技所有 电话:13758237754 网址: Email: 地址:杭州下沙经济技术开发区学林街 608 号 Linux 操作系统的安装以及配置操作系统的安装以及配置操作系统的安装以及配置操作系统的安装以及配置 本篇中要求的开发环境为 linux 操作系统,建议使用 Redhat9.0。Linux 操作系统的主要特点:1、设备独立性:是指操作系统把所有外部设备统一当作成文件来看待,只要安装它们的驱动程序,任何用户都可以象使用文
6、件一样,操纵、使用这些设备,而不必知道它们的具体存在形式。Linux 是具有设备独立性的操作系统,它的内核具有高度适应能力。2、丰富的网络功能:完善的内置网络是 Linux 的一大特点 3、可靠的安全系统:Linux 采取了许多安全技术措施,包括对读、写控制、带保护的子系统、审计跟踪、核心授权等,这为网络多用户环境中的用户提供了必要的安全保障。4、良好的可移植性:是指将操作系统从一个平台转移到另一个平台使它仍然能按其自身的方式运行的能力。Linux 是一种可移植的操作系统,能够在从微型计算机到大型计算机的任何环境中和任何平台上运行。1 如何安装如何安装如何安装如何安装 RedHat9.0 最简
7、单,最方便的安装方法当然是从 CD 安装,你可以享受最人性化的,类似于 Windows 的安装。你只要将计算机设置成光驱引导,把安装 CD1 放入光驱,重新引导系统,在安装界面中直接按回车,即进入如图 1 形化安装界面:图 1 由图可见,在提供“豪华”的图形化 GUI 安装界面的同时,RedHat Linux MorewayTech 杭州茂葳科技所有 电话:13758237754 网址: Email: 地址:杭州下沙经济技术开发区学林街 608 号 9.0 仍然保留了以往版本中的字符模式安装界面,这对于追求安装速度与效率的用户一直是很有吸引力的。因为许多用户是将 RedHat9 安装成 服务器
8、 来使用的,不需要 X-Window 以及 GUI 安装界面。RedHat9 的安装步骤中比以往多了一个环节,那就是对安装光盘介质的检测。它允许在开安装过程前对安装光盘介质进行内容校验,以防止在安装的中途由于光盘无法读取或是内容误造成意外的安装中断,导致前功尽弃。如图 2 所示:图 2 上图中提示是否测试安装 CD 的内容的完整性,选“OK”开始测试安装 CD;选“Skip”不测试安装 CD 开始出现图 7 所示,如果是第一次安装当然要测试安 装 CD,选“OK”后回车,出现如下图 3:MorewayTech 杭州茂葳科技所有 电话:13758237754 网址: Email: 地址:杭州下沙
9、经济技术开发区学林街 608 号 图 3 选“Test”测试安装光盘的文件,选“Eject CD”测试光盘以外的安装文件,这里选择“Test”后或侧,出现如下图 4:正在测试第一张安装 CD,测试完后显示如下图 5 所示,看到图中最后一行英文“It is Ok to install from this media.”说明这张安装 CD 是 OK 的,按“Enter”键回车后显示如下图 6 所示:图 4 图 5 MorewayTech 杭州茂葳科技所有 电话:13758237754 网址: Email: 地址:杭州下沙经济技术开发区学林街 608 号 图 6 图 7 选择“Continue”并按
10、回车开始安装。1)语言选择 RedHat 支持世界上几乎所有国家的语言,这里只要 选中 简体中文,并将系统默认语言选择简体中文如图 7,那么在安装过程结束,系统启动后,整个操作系统的界面都将是简体中文的,用户不用做任何额外的中文化操作和设置。MorewayTech 杭州茂葳科技所有 电话:13758237754 网址: Email: 地址:杭州下沙经济技术开发区学林街 608 号 图 8 2)键盘的配置 图 9 3)鼠标的配置 MorewayTech 杭州茂葳科技所有 电话:13758237754 网址: Email: 地址:杭州下沙经济技术开发区学林街 608 号 图 10 4)选择安装类型
11、 安装类型我们选择“个人桌面”。图 11 5)磁盘分区设置 这也许是整个安装过程中惟一需要用户较多干预的步骤,REDHAT Linux 9.0 提供了两种分区方式 自动分区和使用 DISK DRUID 程序进行手动分区。如图12 所示:MorewayTech 杭州茂葳科技所有 电话:13758237754 网址: Email: 地址:杭州下沙经济技术开发区学林街 608 号 图 12(1)自动分区:如果是全新的计算机,上面没有任何操作系统,建议使用“自动分区”功能,它会自动根据磁盘以及内存的大小,分配磁盘空间和 SWAP 空间。这是一个“危险”的功能,因为它会自动删除原先硬盘上的数据并格式化成
12、为 Linux 的分区文件系统(EXT3、REISERFS 等),所以除非计算机上没有任何其他操作系统或是没有任何需要保留的数据,你才可以使用“自动分区”功能。(2)手动分区:如果硬盘上有其他操作系统或是需要保留其他分区上的数据,建议采用 DISKDRUID 程序进行手动分区。DISK DRUID 是一个 GUI 的分区程序,它可以对磁盘的分区进行方便的删除、添加和修改属性等操作,它比以前版本中使用的字符界面 Fdisk 程序的界面更加友好,操作更加直观。下面我们来看看如何使用 DISK DRUID 程序对硬盘进行分区。因为 Linux 操作系统需要有自己的文件系统分区,而且 Linux 的分
13、区和微软 Windows 的分区不同,不能共用,所以,需要为 Linux 单独开辟一个(或若干个)分区。Linux 一般可以采用 EXT3 分区,这也是 REDHAT Linux 9.0 默认采用的文件系统。6)为系统分区 MorewayTech 杭州茂葳科技所有 电话:13758237754 网址: Email: 地址:杭州下沙经济技术开发区学林街 608 号 为 Linux 建立文件分区可以有两种办法,一种是利用空闲的磁盘空间新建 一个 Linux 分区,另一种是编辑一个现有的分区,使它成为 Linux 分区。如果没有空闲的磁盘空间,就需要将现 有的分区删除后,腾出空间,以建立 Linux
14、 分区。DISK DRUID 程序中有明显的新建、删除、编辑、重设等按钮。用户可以直 观地对磁盘 进行操作。在使用 DISK DRUID 对磁盘分区进行操作时,有四个重要的参数需要仔细设定:它们是挂载点、文件系统类型、驱动器、分区大小。MorewayTech 杭州茂葳科技所有 电话:13758237754 网址: Email: 地址:杭州下沙经济技术开发区学林街 608 号 挂载点:它指定了该分区对应 Linux 文件系统的哪个目录,Linux 允许将不同的物 理磁盘上的分区映射到不同的目录,这样可以实现将不同的服务程序放在不同的物理磁盘上,当其中一个物理磁盘损坏时不会影响到其他物理磁盘上的数
15、据。文件系统类型:它指定了该分区的文件系统类型,可选项有 EXT2、EXT3、REISERFS、JFS、SWAP 等。Linux 的数据分区创建完毕后,有必要创建一个 SWAP 分区,它实际上是用硬盘模拟的虚拟内 存,当系统内存使用率比较高的时候,内核会自动使用 SWAP 分区来模拟内存。大小:指分区的大小(以 MB 为单位),Linux 数据分区的大小可以根据用户 的实际情况进行填写,而 SWAP 大小根据经验可以设为物理内存的两倍,但是当物理 内存大于 1GB 时,SWAP 分区可以设置为 2GB。允许的驱动器:如果计算机上有多个物理磁盘,就可以在这个菜单选项中选中需要进行分区操作的物理磁
16、盘。经过磁盘分区的操作,安装过程中相对最复杂的一个步骤已经过去,接下来的安装将是一马平川。7)网络配置 MorewayTech 杭州茂葳科技所有 电话:13758237754 网址: Email: 地址:杭州下沙经济技术开发区学林街 608 号 8)防火墙配置 MorewayTech 杭州茂葳科技所有 电话:13758237754 网址: Email: 地址:杭州下沙经济技术开发区学林街 608 号 9)设置根口令 即 root 管理员密码,root 账号哎系统中具有最高权限,平时登入系统一般不用该账号。10)选择软件包组(这步要小心)MorewayTech 杭州茂葳科技所有 电话:13758
17、237754 网址: Email: 地址:杭州下沙经济技术开发区学林街 608 号 11)安装软件包(需要一定的时间)MorewayTech 杭州茂葳科技所有 电话:13758237754 网址: Email: 地址:杭州下沙经济技术开发区学林街 608 号 12)创建引导盘 这样系统安装完成,取出光盘后,重启后将首次出现选择菜单如下图所示 MorewayTech 杭州茂葳科技所有 电话:13758237754 网址: Email: 地址:杭州下沙经济技术开发区学林街 608 号 2 在在在在 RedHat 中添加新用户中添加新用户中添加新用户中添加新用户 Linux 是一个多用户和多任务的操
18、作系统。用户要登录 Linux 首先要有个合法的账号,所以必 须创建平常使用的用户账号。现在我们以 root(管理员账号)身份登录 RH9 系统进行账户管理为例说明:在主菜单中选择“系统设置用户和组群”,弹出“Redhat 用户管理器”对话框,点击工具栏的“添加用户”按钮,弹出“创建新用户”对话框 如下图,在“用户名”栏中输入用户账号名,然后在“口令”和“确认口令”栏中输入账号密码,其他的设置可以使用系统的默认设置,一般不需要手工更改。最后点击“确定”按钮。除了以上方式,还可以在终端命令行窗口中创建用户账号:点击 GNOME 面板中的终端命令行窗口快捷工具按钮,在“#”提示符下输入“addus
19、er tjrao1027-p 123wefg”命令,其中“tjrao1027”为账号名,“123wefg”为账号密码。提示:在 Linux 中,如果你以 root 身份登录系统,则可以对系统进行任何更改,包括对内核的 重新编译,这样很容易造成对系统的损坏。所以在一般情况下,我们要创建另外的用户来进行日常使用,root 用户只在系统维护、故障排除等情况下使用。3 配置配置配置配置 PC 机机机机 Linux 的的的的 ftp 服务服务服务服务 在 PC 机命令行输入#redhat-config-services 打开系统服务配置窗口,在左侧一栏找到 vsftpd 服务选项框,并选中它,然后点 F
20、ile-Sav e Changes 保存设置。MorewayTech 杭州茂葳科技所有 电话:13758237754 网址: Email: 地址:杭州下沙经济技术开发区学林街 608 号 4 配置配置配置配置 PC 机机机机 Linux 的的的的 telnet 开发板上电进入 linux 操作系统并进入到命令行,在命令行输入#redhat-config-services 打开系统服务配置窗口,在左侧一栏找到 telnet 服务选项框,并选中它,然后点 File-Save Changes 保存设置,下次开机就启动了 telnet 服务。5 建立交叉编译环境建立交叉编译环境建立交叉编译环境建立交叉
21、编译环境 什么是交叉编译呢?在一种计算机环境中运行的编译程序,能编译出在另外一种环境下运行的代码,我们就称这种编译器支持交叉编译。这个编译过程就叫交叉编译。简单地说,就是在一个平台上生成另一个平台上的可执行代码。如 keil 软件,在 keil 上编译,但在单片机上运行,典型的交叉编译。编译嵌入式 linux 内核前,要先安装交叉编译工具 arm-linux-gcc,随板光盘已附带编译工具。编译工具 arm-linux-gcc-3.4.1.tar.bz2,安装此编译器只需要在/usr/local 目录下建一个 arm 的目录,先将光盘 arm-linux-gcc-3.4.1.tar.bz2 拷
22、贝到某个目录下,然后进入该目录,执行解包命令 tar xjvf cross-3.4.1.tar.bz2 即可,之后可编辑/etc/bashrc 文件,在最后增加路径 export PATH=/usr/local/arm/3.4.1/bin:$PATH,以后编译内核或其他应用程序均可用 arm-linux-来 指定交叉编译器。可以使用 echo$PATH 来查看环境变量中是否有/usr/local/arm/3.4.1/bin 路径变量。6 编译内核编译内核编译内核编译内核 1、解压内核包 将光盘目录下的 linux 内核包解压到某一目录下,然后进行解压,命令:tar jxvf linux-2.6
23、.12.tar.bz2 注意:2.6.12 为 linux 内核版本号。2、编辑 Makefile 文件 进入解压的目录后,运行命令:vi Makefile 找到“CROSS_COMPILE=”这行,将它改为 CROSS_COMPILE=/usr/local/arm/3.4.1/bin/arm-linux-(或者你的系统所安装的 ARM-Linux-gcc 的编译器路径)。设置好后保存退出。这一行是指明所用交叉编译器的版本,位置。修改“ARCH:=”为“ARCH:=arm”指定处理器。MorewayTech 杭州茂葳科技所有 电话:13758237754 网址: Email: 地址:杭州下沙经
24、济技术开发区学林街 608 号 3、配置内核 make config(基于文本的最为传统的配置界面,不推荐使用)make menuconfig(基于文本选单的配置界面,字符终端下推荐使用)make xconfig(基于图形窗口模式的配置界面,Xwindow 下推荐使用)make oldconfig(如果只想在原来内核配置的基础上修改一些小地方,会省去不少麻烦)这三个命令中,make xconfig 的界面最为友好,但 如果你不能使用 Xwindow,那么 就使用 make menuconfig 好了。界面虽然比上面一个差点,总比 make config 的要好多了。在这里我们输入命令:#mak
25、e menuconfig 下图为 make menuconfig 的界面:选择相应的配置时,有三种选择,它们分别代表的含义如下:Y -将该功能编译进内核 N -不将该功能编译进内核 M -将该功能编译成可以在需要时动态插入到内核中的模块 需要使用空格键进行选取。MorewayTech 杭州茂葳科技所有 电话:13758237754 网址: Email: 地址:杭州下沙经济技术开发区学林街 608 号 Linux 的移植的移植的移植的移植 1 Bootloader 的移植的移植的移植的移植 Bootloader(Vivi)源代码分析 Bootloader(Vivi)源代码分析 CSDN Blog
26、 推出文章指数概念,文章指数是对 Blog 文章综合评分后推算出的,综合评分项分别是该文章的点击量,回复次数,被网摘收录数量,文章长度和文章类型;满分 100,每月更新一次。Vivi 是韩国 mizi 公司开发的 bootloader,适用于 ARM9 处理器。Vivi 有两种工作模式:启动加载模式和下载模式。启动加载模式可以在一段时间后(这个时间可更改)自行启动 linux 内核,这时 vivi 的默认模式。在下载模式下,vivi 为用户提供一个命令行接口,通过接口可以使用 vivi 提供的一些命令,见下表:命令 功能 Load 把二进制文件载入 Flash 或 RAM Part 操作 MT
27、D 分区信息。显示、增加、删除、复位、保存 MTD 分区 Param 设置参数 Boot 启动系统 Flash 管理 Flash,如删除 Flash 的数据 1.1 vivi 的配置与编译的配置与编译的配置与编译的配置与编译 建立交叉开发环境,宿主机安装标准 linux 操作系统:RedHat9,建立交叉编译环境arm-linux-gcc-2.95.3。先以 root 用户的身份登陆到 linux 下。进入/usr/local 目录,创建名为 arm 的目录:cd/usr/local mkdir arm 将光盘提供的 cross-2.95.3.tar.bz2 解压到/usr/local/arm
28、 目录:tar jxvf cross-2.95.3.tar.bz2 C/usr/local/arm 然后修改修改 PATH 变量:为了可以方便使用 arm-linux-gcc 编译器系统,把 arm-linux 工具链目录加入到环境变量 PATH 中:修改/etc/profile 文件,添加 pathmunge/usr/local/arm/2.95.3/bin 即可。#Path manipulation if id-u=0;then pathmunge/sbin MorewayTech 杭州茂葳科技所有 电话:13758237754 网址: Email: 地址:杭州下沙经济技术开发区学林街 6
29、08 号 pathmunge/usr/sbin pathmunge/usr/local/sbin pathmunge/usr/local/arm/2.95.3/bin 设置环境变量后,最好是重启或注销一下,这样设置的环境变量才能生效 1.2 配置和编译配置和编译配置和编译配置和编译 vivi 如果 vivi 的源代码已根据开发板作了相应改动,则需要对源代码进行配置和编译,以生成烧入 flash 的 vivi 二进制映象文件。由于 vivi 要用到 kernel 的一些头文件,所以需要 kernel 的源代码,所以先要把 linux的 kernel 准备好。将 vivi 和 kernel 都解到
30、相应目录下(例如我将光盘提供的 vivi 源代码解 压 到/home/chenjun目 录 下,光 盘 提 供 的Linux kernel源 码kernel-h2410eb.041024.tar.gz 也解压到/home/chenjun 目录下,解压后的文件名为kerne-h2410eb)。然后需修改/vivi/Makefile 里的一些变量设置:LINUX_INCLUDE_DIR=/kernel/include/(LINUX_INCLUDE_DIR 为 kernel/include 的对应目录,我的是/home/chen/kerne-h2410eb/include/)因此修改为:LINUX_
31、INCLUDE_DIR=/home/chenjun/kerne-h2410eb/include/CROSS_COMPILE=/usr/local/arm/2.95.3/bin/arm-linux-(CROSS_COMPILE 为arm-linux安装的相应目录,我的是/usr/local/arm/2.95.3/bin/arm-linux-)因此修改为:CROSS_COMPILE=/usr/local/arm/2.95.3/bin/arm-linux-ARM_GCC_LIBS=/usr/local/arm/2.95.3/lib/gcc-lib/arm-linux/2.95.3 (需根据你arm-
32、linux的安装目录修改,我的是MorewayTech 杭州茂葳科技所有 电话:13758237754 网址: Email: 地址:杭州下沙经济技术开发区学林街 608 号/usr/local/arm/2.95.3/lib/gcc-lib/arm-linux/2.95.3)进入/vivi 目录执行 make distclean。(目的是确保编译的有效性,在编译之前将 vivi 里所有的“*.o”和“*.o.flag”文件删掉)进入/vivi 目录里,输入“make menuconfig”,开始选择配置。可以 Load 一个写好的配置文件也可以自己修改试试。注意 Exit 时一定要选“Yes”保
33、存配置。再输入“make”正式开始编译,一会儿就完了。如果不报错,在/vivi 里面就有你自己的“vivi”了。这个就是后面要烧写到 flash 中的 bootloader。1.3 vivi 代码分析代码分析代码分析代码分析 vivi 的代码包括 arch,init,lib,drivers 和 include 等几个目录,共 200 多条文件。Vivi 主要包括下面几个目录:arch:此目录包括了所有 vivi 支持的目标板的子目录,例如 s3c2410 目录。drivers:其中包括了引导内核需要的设备的驱动程序(MTD 和串口)。MTD 目录下分 map、nand 和 nor 三个目录。i
34、nit:这个目录只有 main.c 和 version.c 两个文件。和普通的 C 程序一样,vivi 将从 main函数开始执行。lib:一些平台公共的接口代码,比如 time.c 里的 udelay()和 mdelay()。include:头文件的公共目录,其中的 s3c2410.h 定义了这块处理器的一些寄存器。Platform/smdk2410.h 定义了与开发板相关的资源配置参数,我们往往只需要修改这个文件就可以配置目标板的参数,如波特率、引导参数、物理内存映射等。1.4 vivi 的运行的运行的运行的运行 vivi 的运行也可以分为两个阶段:1.4.1 vivi 的第一阶段的第一阶
35、段的第一阶段的第一阶段 完成含依赖于 CPU 的体系结构硬件初始化的代码,包括禁止中断、初始化串口、复制自身到 RAM 等。相关代码集中在 head.S(viviarchs3c2410 目录下):Head.S:#include config.h#include linkage.h MorewayTech 杭州茂葳科技所有 电话:13758237754 网址: Email: 地址:杭州下沙经济技术开发区学林街 608 号#include machine.h Start of executable code ENTRY(_start)ENTRY(ResetEntryPoint)Exception
36、vector table(physical address=0 x00000000);异常向量表物理地址 0 x00:Reset;复位 b Reset 0 x04:Undefined instruction exception;未定义的指令异常 UndefEntryPoint:b HandleUndef 0 x08:Software interrupt exception;软件中断异常 SWIEntryPoint:b HandleSWI 0 x0c:Prefetch Abort(Instruction Fetch Memory Abort);内存操作异常 PrefetchAbortEntery
37、Point:b HandlePrefetchAbort 0 x10:Data Access Memory Abort;数据异常 DataAbortEntryPoint:b HandleDataAbort MorewayTech 杭州茂葳科技所有 电话:13758237754 网址: Email: 地址:杭州下沙经济技术开发区学林街 608 号 0 x14:Not used;未使用 NotUsedEntryPoint:b HandleNotUsed 0 x18:IRQ(Interrupt Request)exception;慢速中断处理 IRQEntryPoint:b HandleIRQ 0 x
38、1c:FIQ(Fast Interrupt Request)exception;快速中断处理 FIQEntryPoint:b HandleFIQ VIVI magics 0 x20:magic number so we can verify that we only put .long 0 0 x24:.long 0 0 x28:where this vivi was linked,so we can put it in memory in the right place .long _start 0 x2C:this contains the platform,cpu and machine
39、 id .long ARCHITECTURE_MAGIC MorewayTech 杭州茂葳科技所有 电话:13758237754 网址: Email: 地址:杭州下沙经济技术开发区学林街 608 号 0 x30:vivi capabilities .long 0#ifdef CONFIG_PM;vivi 考虑不需要使用电源管理 0 x34:b SleepRamProc#endif#ifdef CONFIG_TEST 0 x38:b hmi#endif Start VIVI head Reset:disable watch dog timer;禁止看门狗计时器 mov r1,#0 x530000
40、00;WTCON 寄存器地址是 0 x53000000,清 0 mov r2,#0 x0 str r2,r1#ifdef CONFIG_S3C2410_MPORT3;不符合条件,跳到下面的关中断 MorewayTech 杭州茂葳科技所有 电话:13758237754 网址: Email: 地址:杭州下沙经济技术开发区学林街 608 号/*在/vivi/include/autoconf.h 中#undef CONFIG_S3C2410_MPORT3*/mov r1,#0 x56000000;GPACON 寄存器地址是 0 x56000000 mov r2,#0 x00000005 str r2,
41、r1,#0 x70;配置 GPHCON 寄存器 mov r2,#0 x00000001 str r2,r1,#0 x78;配置 GPHUP 寄存器 mov r2,#0 x00000001 str r2,r1,#0 x74;配置 GPHDAT 寄存器#endif disable all interrupts;禁止全部中断 mov r1,#INT_CTL_BASE mov r2,#0 xffffffff str r2,r1,#oINTMSK;掩码关闭所有中断 ldr r2,=0 x7ff str r2,r1,#oINTSUBMSK initialise system clocks;初始化系统时钟
42、mov r1,#CLK_CTL_BASE mvn r2,#0 xff000000 str r2,r1,#oLOCKTIME MorewayTech 杭州茂葳科技所有 电话:13758237754 网址: Email: 地址:杭州下沙经济技术开发区学林街 608 号 ldr r2,mpll_50mhz str r2,r1,#oMPLLCON#ifndef CONFIG_S3C2410_MPORT1;满足条件,向下执行 /*在/vivi/include/autoconf.h 中#undef CONFIG_S3C2410_MPORT1*/1:2:4 mov r1,#CLK_CTL_BASE mov
43、r2,#0 x3 str r2,r1,#oCLKDIVN mrc p15,0,r1,c1,c0,0 read ctrl register orr r1,r1,#0 xc0000000 Asynchronous mcr p15,0,r1,c1,c0,0 write ctrl register now,CPU clock is 200 Mhz;CPU 的频率是 200MHz mov r1,#CLK_CTL_BASE ldr r2,mpll_200mhz str r2,r1,#oMPLLCON#else 1:2:2 mov r1,#CLK_CTL_BASE ldr r2,clock_clkdivn
44、MorewayTech 杭州茂葳科技所有 电话:13758237754 网址: Email: 地址:杭州下沙经济技术开发区学林街 608 号 str r2,r1,#oCLKDIVN mrc p15,0,r1,c1,c0,0 read ctrl register orr r1,r1,#0 xc0000000 Asynchronous mcr p15,0,r1,c1,c0,0 write ctrl register now,CPU clock is 100 Mhz;CPU 的频率是 100MHz mov r1,#CLK_CTL_BASE ldr r2,mpll_100mhz str r2,r1,#
45、oMPLLCON#endif bl memsetup;跳转到 memsetup 函数 /*Memsetup 函数的实现:ENTRY(memsetup)initialise the static memory set memory control registers;设置内存控制寄存器的初值 mov r1,#MEM_CTL_BASE adrl r2,mem_cfg_val /*Data Area MorewayTech 杭州茂葳科技所有 电话:13758237754 网址: Email: 地址:杭州下沙经济技术开发区学林街 608 号 Memory configuration values .a
46、lign 4 mem_cfg_val:;定义好的 13*4=52 个字节初值 .long vBWSCON;在/vivi/include/platform/smdk2410.h 中赋值 /*SDRAM 从 32 位变成 16 位,需要修改 vBWSCON 的值*/.long vBANKCON0 .long vBANKCON1 .long vBANKCON2 .long vBANKCON3 /*网卡控制器 vBANKCON3 的值可能需要修改*/.long vBANKCON4 .long vBANKCON5 .long vBANKCON6 /*SDRAM 从 32 位变成 16 位,可能需要修改
47、vBANKCON6 的值*/.long vBANKCON7 .long vREFRESH .long vBANKSIZE /*SDRAM 从 64MB 变成 32MB,需要修改 vBANKSIZE 的值*/.long vMRSRB6 MorewayTech 杭州茂葳科技所有 电话:13758237754 网址: Email: 地址:杭州下沙经济技术开发区学林街 608 号.long vMRSRB7 */add r3,r1,#52 1:ldr r4,r2,#4 str r4,r1,#4 cmp r1,r3 bne 1b;循环操作,直到 13 个寄存器赋值完成 mov pc,lr */#ifdef
48、 CONFIG_PM;vivi 考虑不需要使用电源管理 Check if this is a wake-up from sleep ldr r1,PMST_ADDR ldr r0,r1 tst r0,#(PMST_SMR)bne WakeupStart;查看状态,判断是否需要跳转到 WakeupStart#endif#ifdef CONFIG_S3C2410_SMDK;SMDK 开发板使用 All LED on;点亮开发板上的 LED mov r1,#GPIO_CTL_BASE MorewayTech 杭州茂葳科技所有 电话:13758237754 网址: Email: 地址:杭州下沙经济技术
49、开发区学林街 608 号 add r1,r1,#oGPIO_F;LED 使用 GPIOF 组的管脚 ldr r2,=0 x55aa;使能 EINT0,EINT1,EINT2,EINT3,;另四个管脚配置成输出,屏蔽 EINT4,5,6,7 str r2,r1,#oGPIO_CON mov r2,#0 xff str r2,r1,#oGPIO_UP;disable the pull-up function mov r2,#0 x00 str r2,r1,#oGPIO_DAT#endif#if 0 SVC mrs r0,cpsr bic r0,r0,#0 xdf orr r1,r0,#0 xd3
50、msr cpsr_all,r1#endif set GPIO for UART;设置串口 mov r1,#GPIO_CTL_BASE add r1,r1,#oGPIO_H;设置 GPIO_H 组管脚为串口 MorewayTech 杭州茂葳科技所有 电话:13758237754 网址: Email: 地址:杭州下沙经济技术开发区学林街 608 号 ldr r2,gpio_con_uart str r2,r1,#oGPIO_CON ldr r2,gpio_up_uart str r2,r1,#oGPIO_UP /*inital values for GPIO gpio_con_uart:.long