系统版本: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]内核移植过程记录相关推荐

  1. [linux kernel] 内核下ksz8081驱动调试

    系统版本:Ubuntu18.04-64 编译器版本:gcc version 7.4.0 (Ubuntu/Linaro 7.4.0-1ubuntu1~18.04.1) uboot版本:2018.07 - ...

  2. Linux Kernel suspend/resume 过程

    Linux Kernel suspend/resume 过程 休眠/唤醒在嵌入式Linux中是非常重要的部分,嵌入式设备尽可能的进入休眠状 态来延长电池的续航时间.这篇文章就详细介绍一下Linux中休 ...

  3. Linux内核学习(七):linux kernel内核启动(一):概述篇

    Linux内核学习(七):linux kernel内核启动(一):概述篇 这一篇让我们来大致的了解一下Linux内核的启动过程 这篇文章不涉及源码,重在让你知道这个linux内核的启动过程,源码详细的 ...

  4. RTL8821CS移植过程记录

    RK3308B+RTL8821CS移植 在rk3308b平台移植rtl8821cs,rlt8821cs是wifi+bt一体的模组,主要记录下移植过程中需要注意的地方 移植驱动 将rtl8821cs的驱 ...

  5. Linux kernel内核编译配置选项详解

    转载于:http://lamp.linux.gov.cn/Linux/kernel_options.html 作者:金步国 Code maturity level options 代码成熟度选项 Pr ...

  6. linux kernel内核、驱动日志调试方法(一)

    本文是对网络资料进行总结归纳,抄录其他博客资料,如有侵权,请告知,进行删除 一:通过打印调试printk printk是打印内核消息的函数,printk通过附加不同日志级别(loglevel)或者说消 ...

  7. 正式推出Linux Kernel内核5.19

    导读 近日消息,Linus Torvalds 今天发布了 Linux Kernel 版本 5.19,带来了更多新功能.改进的硬件支持以及大量错误 Bug 和安全修复.这里最有趣的部分是,Linus T ...

  8. 最小的linux内核编译,Linux最小内核移植

    class="markdown_views prism-github-gist"> Linux内核编译 本篇博客来自凌云实验室开发板介绍及其烧录学习笔记 1.内核介绍 一种开 ...

  9. linux kernel内核编程基础总结

    Linux_kernel编程基础总结 时间:2015/10/9 背景:学习linux内核编程,总结学习中的经验,方便之后查看: 通常我们想弄清楚linux内核是怎么样工作的,如何使用内核接口来编写li ...

最新文章

  1. Struts2教程1:第一个Struts2程序
  2. Centos(阿里云) 安装python3.4以及pip3
  3. 消除左递归c++代码_python实现文法左递归的消除
  4. web展现mysql_web页面实现LED跑马灯效果(涉及web前端、原生JS、PHP、mysql)
  5. ML.NET 终于在Jupyter NoteBook 上跑起来了
  6. leetcode 回文数
  7. springcloud config服务端配置(二)
  8. 访问修饰符,封装,继承
  9. layer icon对应图标
  10. TCP 协议报文格式
  11. Java课程设计 商品管理系统
  12. 国产6678开发记录
  13. Java ssm框架是什么?
  14. css旋转立方体教程,通过CSS3实现旋转立方体的方法
  15. Linux查看mac地址
  16. 各种奇葩3389连接不上的解决方法
  17. css:动画 小米官网盒子阴影 心跳动画
  18. MySQL-DQL语句
  19. 淘宝API-物流发货接口
  20. 法雷奥ScaLa核心人物加入:如何带领速腾聚创踏上车规激光雷达量产之路?

热门文章

  1. USACO2014MAR 破坏Sabotage
  2. Windows平台RTMP/RTSP直播推送模块设计和使用说明
  3. web项目访问路径上为什么不能写上WebContent
  4. 危机来了,你是注重危还是注重机
  5. python什么是多态_Python中的多态是什么
  6. CSS基础选择器(标签选择器、类选择器、多类名选择器、 id选择器、通配符选择器、属性选择器)
  7. Godex EZ1300条码打印机打标签时为什么打不出小数点后的零?
  8. 查看mysql错误日志命令_查看mysql错误日志
  9. 安装Chrome插件时出现的“程序包无效”解决方法
  10. 查询Oracle死锁