当前位置:首页 » 操作系统 » 树莓派内核源码

树莓派内核源码

发布时间: 2022-08-25 05:44:14

⑴ 树莓派 编译驱动 需要编译内核吗

如果不是交叉编译的的话,需要下载和系统版本相同的linux内核源代码;如果是交叉编译的话,还需要安装交叉编译工具;详见http://blog.csdn.net/hcx25909/article/details/16860055

⑵ 如何为树莓派2编译内核

入手一块树莓派2开发板,想利用树莓派这个平台总结一些内核和应用程序调试手段。目前已经为树莓派安装了一个arch linux系统。要总结linux内涵调试手段,搭建相应的实验环境,必须重新编译内核才行。所以一个新的编译树莓派2内核的任务就是第一要紧的事情。

首先在ubuntu编译机器上建立编译工作目录
raspberry
|-kernel
|-moles
|-mounts
|-scripts

下载源代码,编译工具,编译脚本
下载源代码
cd ~/raspberry/kernel
git clone https://github.com/raspberrypi/linux.git

git clone很容易被中断,中断不能进行断点续传,运行上面的命令之后,在kernel目录下面又会形成一个linux的目录。

下载编译工具
git clone https://github.com/raspberrypi/tools.git
运行上面的命令之后就会在kernel目录下会形成一个tool目录

编译脚本下载
cd ~/raspberry/kernel/scripts
git init
git remote add origin https://github.com/veccsolutions/RaspberryPi2Scripts.git
git pull origin master

目前已经将编译需要的代码,工具,脚本都准备妥当,那就开始吧
编译过程
1,配置内核
到~/raspberry/kernel/linux目录
运行命令 make ARCH=arm CROSS_COMPILE=~/raspberry/kernel/linux/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian-x64/bin/arm-bcm2708hardfp-linux-gnueabi- bcm2709_defconfig

该目录中存在4个文件夹,本例使用gcc-linaro-arm-linux-gnueabihf-raspbian 或 gcc-linaro-arm-linux-gnueabihf-raspbian-x64。前者对应32位系统后者对应64位系统。

arm-bcm2708hardfp-linux-gnueabi

gcc-linaro-arm-linux-gnueabihf-raspbian
arm-bcm2708-linux-gnueabi

gcc-linaro-arm-linux-gnueabihf-raspbian-x64

2,利用脚本编译内核
进入到目录目录~/raspberry/kernel/scripts
./makekernel.sh

3,安装内核
安装内核的工作主要是将boot分区中的kernel image替换掉,同时将moles中的ko文件做相应的拷贝,同时将firmware中的相应文件做拷贝。moles,和firmware在root分区下面。

⑶ 如何在树莓派上从源代码构建Golang

第一步是安装Mercurial,这是Google用来管理Go源代码的版本控制系统。
sudo apt-get install -y mercurial
对于Mercurial系统来说,其主要的命令行接口是hg,有了这个你就能下载Golang的源代码。下面的命令将把构建Golang所必须的源代码下载到/usr/local/go目录中去:
sudo hg clone -u default
这一过程大约需要10分钟,取决于你的网速有多快了。一旦下载完成,你就可以开始构建的过程了。用cd命令将当前目录修改为/usr/local/go/src,然后开始构建过程:
sudo ./all.bash
构建过程中会在终端上输出很多内容,大部分都是一些信息提示。整个构建过程大概需要90分钟到2小时。
构建进程会提示我们将Go的二进制包所在的目录添加到系统PATH中去。要做到这一点你需要编辑.profile文件,每次你创建一个新的shell会话时,Bash都会处理这个文件。用cd命令将你的当前目录切换回home,使用nano编辑器编辑.profile文件:
nano .profile
在文件最底部,添加如下这行:
export PATH=$PATH:/usr/local/go/bin
键入CTRL + X来退出nano编辑器,然后输入Y来确定编辑过的文件已保存。按下ENTER键来保持当前文件名不变。
你需要退出当前的终端然后重新开启另一个(如果你用的是桌面环境),或者也可以登出再登入(如果你用的是纯命令行界面)。
要验证Go是否安装正确,可以创建一个名为hello.go的文件,然后写下如下代码(着名的hello world又来了):
package main
import "fmt"
func main() {
fmt.Printf("Hello Make Tech Easier!\n")
}
要运行它,请在终端上输入:
1
go run hello.go
程序的输出结果是一行文本:Hello Make Tech Easier!

⑷ 怎么开始读Linux内核源码

本人是一名 android display方面的工程师,结合实际工作经验聊聊(观点未必正确)
1. 准备工作:选择什么样的版本,使用什么样的工具,这个需要考虑好。
如果是要参考书的话,kernel版本一般都应该选择和书里面同步的版本,不要去选择最新的版本。因为最新的版本,各种改动比较多,反而对不上书了。
工具问题,你可以选择windows下的source insight,也可以选择linux下vim+ctags;

2. 第一遍浏览,我建议是先把kernel里面的 start_kernel() 函数里面的东西看清楚(不一定看明白),看看这个过程中,出现了什么玩意,有哪些分支,并将分支初略的画出一张图来(当然,我自己并没做到这一点,有点讽刺了)。
这里面最重要的几个地方,我个人认为,应该搞明白mole机制,它是怎么通过编译链接脚本放在特定的区域,然后系统起来后,又是如何去(按照什么规则)去加载这些模块;
应该搞明白sysfs系统,这个对于驱动和用户空间的连接,有非常大的作用;
系统调用的open()应该走一遭,看看用户空间到kernel之间参数是如何传递,又是怎么通过vfs系统,把open的动作最终落实到某一个驱动的open()上去的;
对kernel启动过程中,内存的分配算法,是怎么从伙伴算法切换到最终的算法上,也应该略有耳闻;对fork()函数的过程有所明白。
对kernel中基本的数据结构实现过程、锁机制实现过程要有概念:
这一部分,总结起来,应该看的路线是:

start_kernel()
mole_init() 宏实现 // 看这个的时候,强烈建议,把makefile真正的意图弄明白
open() 系统调用
fork() 系统调用
sysfs 框架实现
双链表是如何实现的;
锁最终是依靠什么来保证的?(其实还是硬件来保证的)

对于数据结构和锁这部分,就按照《Linux内核设计与实现》里面的东西挨个挨个看。有兴趣,自己也可以实现一个双链表公共API,随便哪个项目,一旦用上,直接抛进去,也未尝不可。

第一遍浏览,窃以为,上面这几部分看明白后,kernel的代码对你依然很难,但已经不再有神秘的面纱。
后续,你想研究某个模块,直接快速定位到那边去就行。

3. 在完全用眼睛看完上面这部分内容后,kernel的路或许找到了,但是,万里长征的第一步,并没有迈出。这个时候,动手是很重要的了。
网上有各种方法,比如说,去kernel maillist里面订阅bug,然后自己试着解bug,此方法可取,而且是非常好。这里会遇到一个问题是,我们该怎么调试?
有人是架各种虚拟机或者多台物理机一起开干,这个可以有。(但是本人动手能力确实有限,这个没干成,本人是后面借助了公司的开发板)
如果你也像我一样,动手能力不足,如果你恰巧是手机或者类似手机开发公司的,你可以直接使用公司的开发机,通过串口log,将printk()的级别设置为3,把你需要的信息打印出来;
如果你是学生或者爱好者,可以花500左右人民币,去淘宝上买一个开发板,也是带串口的,所有的debug信息都是通过串口打印出来,保存到一个Log文件中,然后分析;
至于买什么样的板子,你可以随便选择,经典的s3c2440也行,高端点的树莓派,或者全志什么的,都可以。(不推荐全志,他们添加和修改硬件比较多,驱动也许不好搞)

4. 选择你喜欢的模块,进行深入研究,通过log打印,反复推敲,这个时候,bug是最好的导师。多关注kernel/Documents/ 目录下的文档。
你需要注意的是,一定要把该模块无关的东西砍掉,否则,生命是有限的,而代码是无限的。
最后一句话是,在用眼睛看完后,思考过后,还得动手,然后再思考。否则,只读的话,仅能扫盲。

⑸ 树莓派raspberrypi怎么下载其系统源码

下载方法:
a、网页直接下载:
点到所需要下载的工程,左上角选版本,右方有一个download ZIP按钮可直接下载(笔者下载完成后,在linux中解压提示出错,windows又非常慢切内核建议不要在windows环境解压,
b、使用git下载
$ mkdir raspeberrypi_src
$ cd raspberrypi_src
$ git clone git://github.com/raspberrypi/firmware.git
$ git clone git://github.com/raspberrypi/linux.git
$ git clone git://github.com/raspberrypi/tools.git

会得到三个文件夹:firmware、linux、tools。

⑹ 请问大神在哪儿能下到能刷入到树莓派的内核为2.6的linux镜像(img文件)2013-09-25-wheezy-raspbian.img

https://github.com/raspberrypi
树莓派的代码,,分支下载。

⑺ 树莓派开源到什么程度

树莓派是基于linux的,你可以找找看在linux上的视频播放的实现,比如xmbc。你应该不用去触碰树莓派系统本身的,只需要找一些linxu上的视屏播放实现,应该就可以直接上树莓派上用了。

比如说安装这个:

sudoapt-get-yinstallomxplayer

这样就可以播放视屏了:

omxplayeryi_ge_shiping.mp4

⑻ 树莓派运行wine时出现错误代码c0000018

树莓派3B是卡片电脑,内存为1GB,一般运行Linux。Linux两种主流的内存分配方法2G/2G和3G/1G,树莓派系统后期优化性能,使用2G/2G。(注:树莓派内核3.x仍旧采用3G/1G)
Wine提供Windows API,Winehq官网提供的Wine都是兼容3G/1G的Linux内核。这导致Wine在树莓派3B上运行时会出现内存地址映射,用户数据空间地址映射失败。这些错误都是wine-preload发出的。
我提供两种解决方案。
方法一,编译新的Linux内核:(本地编译,在树莓派上操作)
1.更新软件包:sudo apt-get update
2.安装git(已经有的可以跳过):sudo apt-get install git
2.同步内核源码:git clone --depth=1 https://github.com/raspberrypi/linux (注:此代码只同步.git项目仓库中的master分支)
然后,你可以睡一觉。真的,挂油管也没用,下载很慢的。
3.生成配置文件:先进入clone下来的文件夹,然后执行 make bcm2709_defconfig 会在该目录下生成.config配置文件。
4.执行命令: KERNEL=kernel7
5.修改.config文件:sudo nano .config查找# CONFIG_VMSPLIT_3G is not set 将其改为CONFIG_VMSPLIT_3G=y 再查找 CONFIG_VMSPLIT_2G=y 将其改为 # CONFIG_VMSPLIT_2G is not set 保存
6.执行命令:make -j4 zImage moles dtbs 此时你又可以再睡一觉,大约需要5个小时,注意散热。
7.安装:sudo make moles_install
sudo scripts/mkknlimg arch/arm/boot/zImage /boot/kernel3g.img
sudo cp arch/arm/boot/dts/*.dtb /boot/
sudo cp arch/arm/boot/dts/overlays/*.dtb* /boot/overlays/
8.执行reboot重启
方法二,旧版本的wine是没有预加载器,可能使用旧版本就不会报错了。

热点内容
安卓70能用什么软件 发布:2025-05-16 01:45:09 浏览:480
编程发展史 发布:2025-05-16 01:38:52 浏览:528
android图片气泡 发布:2025-05-16 01:38:40 浏览:885
文件加密编辑器下载 发布:2025-05-16 01:30:41 浏览:343
linuxapacheyum安装 发布:2025-05-16 01:30:31 浏览:476
大连宾利浴池wifi密码是多少 发布:2025-05-16 01:25:36 浏览:172
缓存数据生产服务 发布:2025-05-16 01:08:58 浏览:584
普通电脑服务器图片 发布:2025-05-16 01:04:02 浏览:971
服务器地址和端口如何区分 发布:2025-05-16 01:03:17 浏览:834
重新编目数据库 发布:2025-05-16 00:54:34 浏览:514