内核移植实例.

Slides:



Advertisements
Similar presentations
1 I/O 设备访问方式和类型. 2 Overview n The two main jobs of a computer: l I/O (Input/Output) l processing n The control of devices connneted to the computer is.
Advertisements

Linux 安裝入門與基本管理 課程目標: 學習Linux平台下的安裝設定 與 建置一個基本的Linux伺服器
辅导老师:隋秀峰 2008年10月22日 Lab3:MPI Programming 辅导老师:隋秀峰 2008年10月22日.
網路程式設計 (Network Programming)
信息学科特点及“十二五”规划思路 信息科学部  2010年12月3日 厦门.
《网络基础与Internet应用》.
毛峰教授 北京师范大学教授,博士生导师 国家社科基金项目专家 北京华文教育顾问
2017/3/6 WIRESHARK 的安裝與基本操作.
第一章 嵌入式系统概况 大连理工大学 马洪连.
實驗 9: 無線安全網路之建設.
林森國小一年8班班親會 葉宛婷老師 103年9月19日 晚上7:00-8:30 地點:108教室.
对存储系统发挥特殊作用的文件系统 2006年5月 - 北京.
操作系统结构.
最新計算機概論 第3章 計算機組織.
基于Android的开源平板电脑 (FSPAD723)系统构成分析
基于ARM和linux的开发 华中科技大学 武汉创维特 2017/3/20.
UClinux在3000平台上的移植.
第六章 在华为路由器上配置动态路由OSPF协议(实训)
基于操作系统的编程复习 张玉宏
计算机系统安全 第10章 常用攻击手段.
第16章 編譯與升級Kernel系統核心 課前指引
Socket.
Linux.
Universal Serial Bus USB
嵌入式操作系统 陈香兰 Fall 2009.
Building Embedded Linux 2
W371 如何使网络设备更好的和Windows Vista工作
網路基本概念 本章主要是為讀者建立有關網路的基本知識, 作為後續章節的基礎。首先我們會說明網路的基本概念, 接著介紹網路的各種類型與相關的作業系統, 最後則是介紹 OSI 與 DoD 等兩種網路模型, 讓讀者能進一步了解網路運作的方式。
通訊協定 OSI分層模式 與 TCP/IP協定
CH2 開發環境介紹 最簡單的互動設計 – Arduino一試就上手 孫駿榮、吳明展、盧聰勇.
ARM裸机第一部分-ARM那些你得知道的事
(C) Active Network CO., Ltd
配置编译内核.
作 業 系 統 第三組 楊育翰 顏瑞霖.
C H A P T E R 10 存储器层次.
Bootloader技术分析.
Linux 圖形操作介面 GUI -- X-window 與 Webmin
虛擬化基本概念.
信息存储与管理 国家天文台 (科技处)信息与计算中心.
高等职业教育“十一五”规划教材 高 职 高 专 文 秘 类 教 材 系 列
陈香兰 助教:陈博、李春华 Spring 2009 嵌入式操作系统 陈香兰 助教:陈博、李春华 Spring 2009.
u-boot环境变量和常用命令 广州创龙电子科技有限公司
Windows 2003 server 進階介紹 麋鹿.
第8章 配置Linux网络 本章将从介绍Webmin软件开始,详细介绍各种网络相关的配置,如设置以太网接口连接Internet、DHCP服务器架设、设置NFS实现Unix/Linux系统间文件共享和架设DNS服务器等。通过本章学习,用户可以到相关的网络知识,并能深入理解Fedora提升用户使用该操作系统的能力。
1-1-1作業系統的功能 提供使用者操作介面 提供程式執行環境 控制輸入\輸出程序 分配系統資源 管理與維護磁碟中的檔案
DMA-2440XP WinCE5.0安裝與使用 長高科技 顏旭偉.
SPI驱动 广州创龙电子科技有限公司 Guangzhou Tronlong Electronic Technology Co., Ltd.
I2C驱动 广州创龙电子科技有限公司 Guangzhou Tronlong Electronic Technology Co., Ltd.
嵌入式系统的Boot Loader技术 陈文智 浙江大学计算机学院 2009年5月.
内核移植基础.
信息系统安全 常州兆豪电子科技有限公司 陈 健.
(第2版).
Linux核心編譯與模組管理 2013/01/19.
Author:BobZhang Copy Right 2007
(第2版).
3.1 通訊協定 3.2 開放系統參考模式(OSI) 3.3 公眾數據網路 3.4 TCP/IP通訊協定
3 電子商務技術.
操作系统的结构和硬件支持 第2章 操作系统的结构和硬件支持.
嵌入式Linux开发流程 成都研究所操作系统团队.
AM437x-GPMC接口 讲解 广州创龙电子科技有限公司
ARM裸机第一部分-ARM那些你得知道的事
WINDOWS 7 磁盘管理.
SD IO Interface World Real Time Clock / Alarm with C-LCM
SD IO Interface World Real Time Clock / Alarm with C-LCM
行動寬頻介接網路與IoT實務應用-實驗課程
Linux网络配置管理.
Requirements for SPN Information Modeling
Linux文件系统.
劉庠宏、林合治編著 國立高雄大學應用數學系 2005年3月1日
Presentation transcript:

内核移植实例

内容提要 Linux内核移植 网卡驱动移植 SD/eMMC驱动移植 USB主机控制器驱动移植

Linux内核移植 嵌入式linux系统移植步骤 准备开发板和相关资料 要了解开发板的相关配置(有那些外围设备等) 下载内核源码、取得相关工具软件 kernel,toolchain etc. 选定参考板 选择一个内核中已经支持,且和自己的开发板相似的参考板为模板,进行修改

Linux内核移植 修改开发板相关代码 完成BSP的修改移植 如:arch/arm/mach-exynos/ 如果使用设备树则修改设备树文件 如:arch/arm/boot/dts/exynos4412-origen.dts 添加驱动 编译、调试、下载内核

Linux内核移植 移植相关目录和代码 添加基本驱动 arch/arm/mach-exynos 闪存驱动(MTD NAND) arch/arm/plat-samsung arch/arm/tools/mach-types arch/arm/Kconfig arch/arm/Makefile arch/arm/boot/compressed arch/arm/boot/dts/ Makefile 添加基本驱动 闪存驱动(MTD NAND) 串口用来打印信息 可以在内核启动之前打印信息 内核启动后可以通过console打印 信息 网络支持可以使得开发调试更为方便 如挂载网络文件系统 nfs

Linux内核移植 顶层Makefile Makefile ARCH=arm CROSS_COMPILER=arm-cortex_a8-linux-gnueabi- …… vmlinux: $(vmlinux-lds) $(vmlinux-init) $(vmlinux-main) vmlinux.o \ $(kallsyms.o)

arch/arm/Makefile Linux内核移植 arch/arm/mach-exynos/Makefile.boot machine-$(CONFIG_ARCH_EXYNOS) := exynos ifneq ($(machine-y),)‏ MACHINE := arch/arm/mach-$(machine-y)/ else MACHINE := endif textofs-y := 0x00008000 TEXT_OFFSET := $(textofs-y) ‏ arch/arm/mach-exynos/Makefile.boot zreladdr-y := 0x20008000 params_phys-y := 0x20000100

arch/arm/boot/Makefile Linux内核移植 arch/arm/boot/Makefile ZRELADDR := $(zreladdr-y)‏ PARAMS_PHYS := $(params_phys-y)‏ INITRD_PHYS := $(initrd_phys-y) export ZRELADDR INITRD_PHYS PARAMS_PHYS

Linux内核移植 基本移植 拷贝设备树文件 cp arch/arm/boot/dts/exynos4412-origen.dts arch/arm/boot/dts/exynos4412- fs4412.dts 在Makefile中添加新的设备树文件的编译项 $ vim arch/arm/boot/dts/Makefile exynos4412-origen.dtb \ exynos4412-fs4412.dtb \ 修改设备树文件 删除firmware节点。这是TrustZone相关的程序,并未提供。 firmware@0203F000 {……};

Linux内核移植 生成默认配置 make ARCH=arm exynos_defconfig 修改配置 $ make ARCH=arm menuconfig General setup ---> (arm-none-linux-gnueabi-) Cross-compiler tool prefix 编译 $ make ARCH=arm uImage -j2 $ make ARCH=arm dtbs 测试 将uImage和设备树下载到开发板的内存中,使用bootm命令启动内核

网卡驱动移植 网卡移植 添加设备节点,参考: 原理图 Documentation/devicetree/bindings/net/davicom-dm9000.txt Documentation/devicetree/bindings/interrupt-controller/interrupts.txt Documentation/devicetree/bindings/arm/gic.txt reg = <0x5000000 0x2 0x5000004 0x2>; interrupt-parent = <&gpx0>; interrupts = <6 4>;

网卡驱动移植 添加驱动配置 添加网络配置 Device Drivers ---> [*] Network device support ---> [*] Ethernet driver support ---> <*> DM9000 support [ ] Force simple NSR based PHY polling (NEW) 添加网络配置 [*] Networking support ---> Networking options ---> <*> Packet socket <*> Unix domain sockets <*> PF_KEY sockets [*] TCP/IP networking [*] IP: kernel level autoconfiguration

网卡驱动移植 添加网络文件系统配置 时钟相关代码修改 File systems ---> [*] Network File Systems ---> <*> NFS client support <*> NFS client support for NFS version 2 (NEW) <*> NFS client support for NFS version 3 (NEW) [*] Root file system on NFS 时钟相关代码修改 参考Documentation/clk.txt:Part 6 - Disabling clock gating of unused clocks,可以通过bootargs进行参数传递,也可以直接修改代码。 drivers/clk/clk.c:529:static bool clk_ignore_unused = true; 重新编译并测试

SD/eMMC驱动移植

SD/eMMC驱动移植 SD卡主机控制器节点 sdhci@12530000 { bus-width = <4>; pinctrl-0 = <&sd2_clk &sd2_cmd &sd2_bus4>; pinctrl-names = "default"; cd-gpios = <&gpx0 7 0>; cd-inverted = <0>; status = "okay"; };

SD/eMMC驱动移植 驱动配置选项 Device Drivers ---> <*> MMC/SD/SDIO card support ---> <*> Secure Digital Host Controller Interface support <*> SDHCI support on Samsung S3C SoC

SD/eMMC驱动移植 文件系统选项 File systems ---> DOS/FAT/NT Filesystems ---> <*> MSDOS fs support <*> VFAT (Windows-95) fs support (iso8859-1) Default iocharset for FAT -*- Native language support ---> <*> Codepage 437 (United States, Canada) <*> Simplified Chinese charset (CP936, GB2312) <*> ASCII (United States) <*> NLS ISO 8859-1 (Latin 1; Western European Languages) <*> NLS UTF-8

USB主机控制器驱动移植

USB主机控制器驱动移植

USB主机控制器驱动移植 usbphy: usbphy@125B0000 { #address-cells = <1>; #size-cells = <1>; compatible = "samsung,exynos4x12-usb2phy"; reg = <0x125B0000 0x100>; ranges; clocks = <&clock 2>, <&clock 305>; clock-names = "xusbxti", "otg"; status = "okay"; usbphy-sys { reg = <0x10020704 0x8>; };

USB主机控制器驱动移植 ehci@12580000 { usbphy = <&usbphy>; status = "okay"; }; usb3503@08 { compatible = "smsc,usb3503"; reg = <0x08 0x4>; connect-gpios = <&gpm3 3 1>; intn-gpios = <&gpx2 3 1>; reset-gpios = <&gpm2 4 1>; initial-mode = <1>;

USB主机控制器驱动移植 Device Drivers ---> [*] USB support ---> <*> EHCI HCD (USB 2.0) support <*> EHCI support for Samsung S5P/EXYNOS SoC Series <*> USB Mass Storage support <*> USB3503 HSIC to USB20 Driver USB Physical Layer drivers ---> <*> Samsung USB 2.0 PHY controller Driver SCSI device support ---> <*> SCSI device support <*> SCSI disk support