[linux kernel]内核移植过程记录
系统版本:Ubuntu18.04-64
编译器版本:gcc version 7.4.0 (Ubuntu/Linaro 7.4.0-1ubuntu1~18.04.1)
uboot版本:2018.07 -linux4sam_6.0
板子型号:at91sama5d3x-xplained
MCU型号:sama5d36
内核移植主要是裁剪一些不需要的功能,使用对应的交叉工具链把内核重新编译,设备树文件按照硬件去配置。
一、配置文件路径
arch/arm/configs/sama5_defconfig
//配置文件路径
arch/arm/configs/sama5_defconfig
//声明环境变量,指定交叉编译器
$ export CROSS_COMPILE=arm-linux-gnueabi-
//先按照默认配置编译内核文件,看是否会报错,编译出来的文件先进行烧录,是否能正确引导文件系统;
$ make ARCH=arm sama5_defconfig
$ make ARCH=arm
//图形化配置窗口调出
$ make ARCH=arm menuconfig
//单独编译设备树文件,生成dtb文件
$ make ARCH=arm dt
二、把编译的zImage和dtb文件烧录板子,根据打印信息,分析出硬件驱动的情况。
1、内核接收uboot传递过来的分区信息,要和设备树中的分区一致,后面再细讲;
Kernel command line: console=ttyS0,115200 earlyprintk mtdparts=atmel_nand:256k(bootstrap)ro,768k(uboot)ro,256K(env_redundant),256k(env),512k(dtb),6M(kernel)ro,-(rootfs) rootfstype=ubifs ubi.mtd=6 root=ubi0:rootfs
2、GPIO控制器驱动OK
AT91: PM: standby: standby, suspend: ulp0
gpio-at91 fffff200.gpio: at address (ptrval)
gpio-at91 fffff400.gpio: at address (ptrval)
gpio-at91 fffff600.gpio: at address (ptrval)
gpio-at91 fffff800.gpio: at address (ptrval)
gpio-at91 fffffa00.gpio: at address (ptrval)
pinctrl-at91 ahb:apb:pinctrl@fffff200: initialized AT91 pinctrl driver
3、DMA通道生效
at_hdmac ffffe600.dma-controller: Atmel AHB DMA Controller ( cpy set slave ), 8 channels
at_hdmac ffffe800.dma-controller: Atmel AHB DMA Controller ( cpy set slave ), 8 channels
4、USB控制器驱动注册成功
usbcore: registered new interface driver usbfs
usbcore: registered new interface driver hub
usbcore: registered new device driver usb
5、i2C总线驱动模型注册成功
at91_i2c f0014000.i2c: using dma0chan0 (tx) and dma0chan1 (rx) for DMA transfers
at91_i2c f0014000.i2c: AT91 i2c bus driver (hw version: 0x402).
at91_i2c f0018000.i2c: using dma0chan2 (tx) and dma0chan3 (rx) for DMA transfers
at91_i2c f0018000.i2c: AT91 i2c bus driver (hw version: 0x402).
6、蓝牙驱动注册成功
Bluetooth: Core ver 2.22
NET: Registered protocol family 31
Bluetooth: HCI device and connection manager initialized
Bluetooth: HCI socket layer initialized
Bluetooth: L2CAP socket layer initialized
Bluetooth: SCO socket layer initialized
7、串口、SPI、CAN驱动注册
ssc f0008000.ssc: Atmel SSC device at 0x(ptrval) (irq 20)
atmel_usart_serial.0.auto: ttyS2 at MMIO 0xf0020000 (irq = 24, base_baud = 4125000) is a ATMEL_SERIAL
atmel_usart_serial.1.auto: ttyS0 at MMIO 0xffffee00 (irq = 34, base_baud = 8250000) is a ATMEL_SERIAL
console [ttyS0] enabled
atmel_spi f0004000.spi: DMA TX channel not available, SPI unable to use DMA
atmel_spi f0004000.spi: Atmel SPI Controller using PIO only
m25p80 spi0.0: unrecognized JEDEC id bytes: 00, 00, 00
atmel_spi f0004000.spi: Atmel SPI Controller version 0x213 at 0xf0004000 (irq 19)
libphy: Fixed MDIO Bus: probed
CAN device driver interface
at91_can f000c000.can: device registered (reg_base=(ptrval), irq=42)
8、GMAC控制器上面的网络芯片没有驱动成功,因为id读取为全0xFF;
libphy: MACB_mii_bus: probed
Generic PHY f0028000.ethernet-ffffffff:01: attached PHY driver [Generic PHY] (mii_bus:phy_addr=f0028000.ethernet-ffffffff:01, irq=POLL)
macb f0028000.ethernet eth0: Cadence GEM rev 0x00020119 at 0xf0028000 irq 43 (ee
[linux kernel]内核移植过程记录相关推荐
- [linux kernel] 内核下ksz8081驱动调试
系统版本:Ubuntu18.04-64 编译器版本:gcc version 7.4.0 (Ubuntu/Linaro 7.4.0-1ubuntu1~18.04.1) uboot版本:2018.07 - ...
- Linux Kernel suspend/resume 过程
Linux Kernel suspend/resume 过程 休眠/唤醒在嵌入式Linux中是非常重要的部分,嵌入式设备尽可能的进入休眠状 态来延长电池的续航时间.这篇文章就详细介绍一下Linux中休 ...
- Linux内核学习(七):linux kernel内核启动(一):概述篇
Linux内核学习(七):linux kernel内核启动(一):概述篇 这一篇让我们来大致的了解一下Linux内核的启动过程 这篇文章不涉及源码,重在让你知道这个linux内核的启动过程,源码详细的 ...
- RTL8821CS移植过程记录
RK3308B+RTL8821CS移植 在rk3308b平台移植rtl8821cs,rlt8821cs是wifi+bt一体的模组,主要记录下移植过程中需要注意的地方 移植驱动 将rtl8821cs的驱 ...
- Linux kernel内核编译配置选项详解
转载于:http://lamp.linux.gov.cn/Linux/kernel_options.html 作者:金步国 Code maturity level options 代码成熟度选项 Pr ...
- linux kernel内核、驱动日志调试方法(一)
本文是对网络资料进行总结归纳,抄录其他博客资料,如有侵权,请告知,进行删除 一:通过打印调试printk printk是打印内核消息的函数,printk通过附加不同日志级别(loglevel)或者说消 ...
- 正式推出Linux Kernel内核5.19
导读 近日消息,Linus Torvalds 今天发布了 Linux Kernel 版本 5.19,带来了更多新功能.改进的硬件支持以及大量错误 Bug 和安全修复.这里最有趣的部分是,Linus T ...
- 最小的linux内核编译,Linux最小内核移植
class="markdown_views prism-github-gist"> Linux内核编译 本篇博客来自凌云实验室开发板介绍及其烧录学习笔记 1.内核介绍 一种开 ...
- linux kernel内核编程基础总结
Linux_kernel编程基础总结 时间:2015/10/9 背景:学习linux内核编程,总结学习中的经验,方便之后查看: 通常我们想弄清楚linux内核是怎么样工作的,如何使用内核接口来编写li ...
最新文章
- Struts2教程1:第一个Struts2程序
- Centos(阿里云) 安装python3.4以及pip3
- 消除左递归c++代码_python实现文法左递归的消除
- web展现mysql_web页面实现LED跑马灯效果(涉及web前端、原生JS、PHP、mysql)
- ML.NET 终于在Jupyter NoteBook 上跑起来了
- leetcode 回文数
- springcloud config服务端配置(二)
- 访问修饰符,封装,继承
- layer icon对应图标
- TCP 协议报文格式
- Java课程设计 商品管理系统
- 国产6678开发记录
- Java ssm框架是什么?
- css旋转立方体教程,通过CSS3实现旋转立方体的方法
- Linux查看mac地址
- 各种奇葩3389连接不上的解决方法
- css:动画 小米官网盒子阴影 心跳动画
- MySQL-DQL语句
- 淘宝API-物流发货接口
- 法雷奥ScaLa核心人物加入:如何带领速腾聚创踏上车规激光雷达量产之路?
热门文章
- USACO2014MAR 破坏Sabotage
- Windows平台RTMP/RTSP直播推送模块设计和使用说明
- web项目访问路径上为什么不能写上WebContent
- 危机来了,你是注重危还是注重机
- python什么是多态_Python中的多态是什么
- CSS基础选择器(标签选择器、类选择器、多类名选择器、 id选择器、通配符选择器、属性选择器)
- Godex EZ1300条码打印机打标签时为什么打不出小数点后的零?
- 查看mysql错误日志命令_查看mysql错误日志
- 安装Chrome插件时出现的“程序包无效”解决方法
- 查询Oracle死锁