移植linux kernel,应该怎么做

AI权益加码!Claude Code、Cursor等20+工具免费用! 购周边限时加赠Coding Plan Lite,畅享主流AI工具!学习进阶更高效! 阅读详情

工作需要,公司做的soc芯片换处理器核,本人负责对linux kernel完成跨处理器的移植(arm到powerpc),是小端处理器到大端处理器的移植。因公司soc涉及的模块较多,kernel移植我要完成kernel稳定启动,并且能正常进入console,只有串口驱动。剩余的驱动模块交由各个模块驱动开发人员来完成移植工作。

做了3周左右,代码部分已经根据powerpc的kernel框架修改了原来针对arm的板级支持包,换核后的soc处于FPGA验证阶段,现在kernel已经可以进入console,但是发现核的cache部分有问题,console还不能正常使用(用户空间是cached)。待IC工程师修复cache问题后,问题应该就不大了。

这个移植工作,有很多比方都是值得总结的,如kernel移植思路,大小端移植问题等。

今天就对于移植kernel的思路来总结下,这里总结不涉及具体代码,而只是说说保证kernel能进入console稳定运行这样一个最小系统,我们需要完成哪些部分的移植呢。

根据这次移植我的思路,需要以下几个方面的移植:

cpu core初始化,内存管理子系统(mmu),硬件时钟系统,早期调试打印机制,异常中断子系统,时间子系统(timer),串口驱动


1 cpu core初始化

cpu core的初始化主要指cpu的工作模式,通用寄存器初始化,cache初始化,异常入口初始化,mmu初始化等。也就是cpu core内部各个单元模块的初始化。

这部分针对主流cpu core的各个系列,kernel中都有支持,一般在arch/xxx(处理器类型)/kernel/head_xx.S中,需要我们改动的部分很少,但了解其过程对于解决一些奇怪问题还是有帮助的。

如处于仿真验证阶段的soc,我遇到的cache读写有问题,就是在该阶段修改代码进行对比验证查找到问题。

十五.linux开发之Kernel移植——话说linux内核 有道云笔记地址: 详情看这里链接,记录太多,就不一一排版了。 http://note.youdao.com/noteshare?id=7cc3e91b91754d1ba42913229eb18689&sub=E4714EDA91904A59AF9460249A4E1B6F   一、Linux Kernel简介   (1)linux、windows、android、ucos就... 阅读详情

相关推荐

linux kernel 4.6 移植到imx280手札

资源简介 周立功过节发招,49元买了imx280核心板: ARM926EJ-S 架构 arm v5TE 指令集,cpu最高能跑450M 默认光盘资料是 比较老的uboot-2009加linux-2.6内核。 因为本人电脑是ubuntu环境,周立功提供的烧写环境都不适用与我的电脑。 不过众里寻他千百度,终于在开源项目rockbox里面找到一个linux下面的usb烧写工具. 外加一根串口

yang_89的专栏 3109

【HID】规范精讲[4]: 蓝牙HID传输机制——无线数据的传递规则与底层逻辑

蓝牙HID传输机制深度解析 蓝牙HID协议通过双信道架构实现高效数据传输。控制信道采用同步请求-响应模式,确保配置指令和状态查询的可靠性;中断信道采用异步无确认模式,实现鼠标移动、键盘按键等实时操作的极低延迟传输。两种信道分工明确:控制信道处理特征报告等可靠性要求高的数据,中断信道处理输入/输出报告等实时性要求高的数据。协议严格规定了报告长度校验、MTU约束和传输优先级等规则,既保证了不同类型数据的传输质量,又确保了设备间的兼容性。这种机制让无线外设获得了接近有线的使用体验。

byte轻骑兵的技术小窝 2万+

十七.linux开发之Kernel移植——内核的启动过程分析

有道云笔记地址: 详情看这里链接,记录太多,就不一一排版了。 http://note.youdao.com/noteshare?id=e68caf68c259bc3491dd7f8c4ac4bb99&sub=435C54F4A4C444B995888BCC71CDB607 2.6.35.7版本kernel。 参考:http://blog.chinaunix.net/uid-26...

Mr.Wang的博客 3326

LE Audio ASE状态机深度解析[2]:Codec Configured 流程分析

本文深入解析了Android蓝牙LEAudio模块中AseStateMachineProcessCodecConfigured核心函数的实现逻辑,该函数负责处理ASE(音频流端点)的CodecConfigured状态转换。文章详细阐述了参数解析、QoS校验、组状态管理、CIG创建等关键环节,揭示了LEAudio流配置的核心机制。

byte轻骑兵的技术小窝 2万+

记录自己的程序移植经历(裸机软PLC C语言程序移植Linux

当然,我就是小白一个。一般来说,keil开发的程序,都有单独的main.c文件,这里面包含了移植用不到的函数,有两个办法,就是将不需要的函数删除,单独留下需要的函数写一个入口函数main。首先肯定要知道的就是每个文件都大体有什么功能,通篇看一下代码,从代码文件名入手,就能大致知道里面的代码是干什么的了,或者简单点,直接请教工程师,每个文件都是什么功能。由先前看文档、搜资料的基础知道,STM32的库在linux里是用不了的,我用了最粗暴的办法,将所需要的文件里有关于HAL库的头文件删除,然后看报错部分。

weixin_72426331的博客 831

keil移植linux(makefile)

keil移植linux

qq_42227760的博客 3859

如何在linux上运行keil,Linux下安装运行keil uVision 4 (MDK v4.7)

前几日把Keil uVision(mdk v4.7)在ubuntu 12.04LTS上运行起来了。过程还算顺利,分享下步骤给需要的朋友。先上个安装完的屏幕截图(我用的是老土的Gnome Classic界面),可以看到wine菜单里有keil uVision4了。 其实就是使用Wine(http://baike.baidu.com/link?url=8tjgR-t30E9pQ-h4MoY_55bl_...

weixin_39637363的博客 2050

Linux移植的一般步骤,linux kernel 移植步骤

linux kernel 移植步骤linux kernel 移植步骤1.准备准备:linux-2.6.32 kernel(linux-2.6.32.tar.bz2)2.目录结构认清kernel的目录结构,了解目录的作用。2.1 根目录目录文件解压并查看:$ tar -xvf linux-2.6.32.tar.bz2$ cd linux-2.6.32$ ls2.2 目录的作用arch:硬件体系结构相...

weixin_32273559的博客 1080

Linux系统移植kernel移植

一、移植kernel主要步骤表: 添加开发板默认配置文件 arch/arm/configs 目录添加 imx_iot_emmc_defconfig (官方imx_v7_mfg_defconfig) 添加开发板对应的设备树文件 1、arch/arm/boot/dts目录添加imx6ull-iot-emmc.dts ...

丨晋丨 2219

Linux kernel移植

Linux kernel移植

L1643319918的博客 1018

在mtk移植linux内核,移植 Linux Kernel 造成無法開機之解決方案以及除錯工具

一般在以下情況, 我們會進行移植 Linux Kernel 的動作.1. 將新版 Linux Kernel 移植到全新 SoC 上開發人員為 SoC 廠商(e.g. MTK, TI, Allwinner) R&D engineer.在此階段的移植, 需要寫 dtsi, low-level code (位於 arch// 底下) 以及 SoC 相關的底層驅動程式. 並且須確保 SoC 功能運...

weixin_39617215的博客 778

Linux Kernel入门到精通系列讲解(RV-Kernel 篇) 5.1 从零移植 Linux kernel,基于RISC-V

上一章节我们已经将`u-boot`部署好了,本章节,我们将从零移植`Naruto-Pi`的`Linux kernel`,移植通用`RISCV`很简单,在移植之前,大家也可以参考我之前写的文章,

DSMGUOGUO的博客 1037

移植linux kernel

百度"移植kernel",看了网上文章,移植的步骤大概是: 获取源码,搭建交叉编译环境。配置内核。修改Makefile,找一个相近的config文件,稍微改改,就可以编译了。 编译得到了个2M多的zImage,烧到板子上启动失败,咋回事呢? SMDK2416 # bootm c0008000

cmm20071020的专栏 1041

Linux kernel移植流程

<br />标签: ARM Linux Kernel 移植 抵岸科技<br /> <br />Linux kernel简介<br />Linux内核是linux系统的心脏,它实现了操作系统五大主要功能模块:进程管理、内存管理、文件系统、设备控制和网络。Linux内核的功能模块如图1所示。<br /> <br /> <br />图 1 <br />进程管理模块可以说是linux内核的心脏模块,它负责创建和终止进程,并且处理它们和外部的联系(输入和输出)。对整个系统功能来讲,不同进程之间的通信(通过信号、管道、

抵岸科技的专栏 907

十八.linux开发之Kernel移植——从三星官方内核开始移植

有道云笔记地址: 详情看这里链接,记录太多,就不一一排版了。 http://note.youdao.com/noteshare?id=4df8da7c54557abfe7089285917c65f9 一、内核移植初体验 1、三星官方移植版内核获取 (1)从网盘下载源码包。 (2)这个文件最初是来自于三星的SMDKV210开发板附带的光盘资料 (3)删除无关文件,一般都是在...

Mr.Wang的博客 4182

linux fl2440 kernel 移植

kernel移植主要内容在make menuconfig。  在linux kernel源文件中每个文件夹都有一个Kconfig文件 这些Kconfig文件决定了make menuconfig的图形化界面有哪些选项 如上所示 vim arch/Kconfig     要选OPROFILE选项必须选择PROFILING和HAVE_OPROFILE,不选这两个不会出现OPROFILE选项。选择OP

qq_39522922的博客 391

【ARM】一步一步移植Linux Kernel 2.6.13到板子

1环境搭建所需材料 2环境搭建所需材料之间的关系 3所使用的开发板 4译内核 1修改makefile 2拷贝配置文件 3编译得到zImage 4把zImage转成uImage 5开发板串口连接 6uboot设置 7通过tftp服务器下载uImage 8启动内核 9先看挂载文件系统的样子 10下面正式来操作 1安装nfs-kernel-server 2配置网络文件系统 3配置内核里面的nfs选项 11

Wu_Being 的CSDN 博客 1544

LibCSTL开发手记:Linux Kernel list 移植优化

移植后我们只需要将list_node定义在你自己的结构体中即可。为了可读性和操作简化,请把list_node定义在结构体头部,虽然对于list来说你不把它定义在头部也没有关系。这是Linux内核中很常用的一个宏定义,配合offsetof可以轻松根据结构体成员计算出结构体首地址,内核通用链表实现依赖于这个红。我么先来看offsetofsize_t0->这个宏用来获取结构体成员的偏移,通过将结构体首地址定义为 0 ,从而获取结构体成员相对于 0 的偏移, 也就是相对于结构体首地址的偏移。再来看。

2301_79077042的博客 505

我所理解的linux kernel移植

从林纳斯.托瓦兹(Linus B. Torvalds)执掌的网站www.kernel.org下载linux内核,比如:linux-4.9.30.tar.gz,解压:tar zxf linux-4.9.30.tar.gz,进入目录:cd linux-4.9.30, 配置:make ARCH=arm64 menuconfig,编译:make ARCH=arm64 CROSS_COMPILE=aarch

liuzq的专栏 1032
上一篇: 对于字节序小端和大端的思考
下一篇: linux kernel如何处理大端小端字节序
kerneler_
博客等级 码龄15年 1911粉丝 128原创
评论 7
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值