15256|19

5979

帖子

8

TA的资源

版主

楼主
 

【转】Altera SoC的Linux内核编译方法 [复制链接]

 
本帖最后由 chenzhufly 于 2015-1-19 15:54 编辑 SoC的Linux内核编译方法 这里介绍如何编译SD Card的image。这里并没有太多的原理需要讲述,但是大多数刚刚接触到linux 嵌入式的朋友还是需要花些时间找编译方法。这里提供了为SoCFPGA编译内核的整个流程。 本人的编译环境:Ubuntu 12.10(说明:本人是使用root登陆执行所有命令的,所以我的命令不涉及到执行权限的问题,如果大家自己嫌每次都需要使用sudo很麻烦,也可以想办法使用root登陆,当然操作不当可能引起系统当机) 编译之前有三点工作需要做:1、 安装交叉编译链。 2、 安装git工具。 3、 下载内核源码。 交叉编译链在前面已经提过,这里直接说在linux 上安装的方法。安装前得从网上下载安装文件,我们选择linaro组织提供的arm-linux编译链,linaro也在定时更新。https://launchpad.net/linaro-toolchain-binaries/trunk/ 这里会列出每次发布出来的交叉编译下载地址。目前最新的版本是2013.10版。 在terminal 中输入
  1. wget https://launchpad.net/linaro-too ... 13.10_linux.tar.bz2
复制代码
下载编译链。(这里下载的位置可以任意,最好是新建一个专门的文件夹,免得乱了,我这里使用 /blog/toolchain 目录作为范例) 完成后需要对文件解压,解压命令为:
  1. tar jxvf gcc-linaro-arm-linux-gnueabihf-4.8-2013.10_linux.tar.bz2
复制代码
然后再终端中输入
  1. export CROSS_COMPILE=/blog/toolchain/gcc-linaro-arm-linux-gnueabihf-4.8-2013.10_linux/bin/arm-linux-gnueabihf-
复制代码
这样交叉编译链安装就算完成了。 接下来就是安装git工具了。git 是类似于svn 的版本控制工具了。他的开发者就是linux内核的发明者linus torvalds。关于git 的安装可以参考http://www.douban.com/note/263056199/ 这个链接的源码安装方法。安装完成后输入git --version 命令可以查看到 git version 1.x.x的信息说明安装成功了。(在ubuntu 环境下也可以使用apt-get install git 命令安装git 工具) 后面的工作就是从rocketboards的git 仓库中获取linux 的源码了。
  1. git clone gits://git.rocketboards.org/linux-socfpga.git

    cd linux-socfpga

    git checkout -b kenel_3.12 origin/socfpga-3.12

复制代码
(这里kernel 3.12可以任意命令, origin/socfpga-3.12 表示远程版本信息,Altera 从3.7版本开始都有上传到git server上。用户可以用 git branch -r 查看远程的版本号,目前最新的版本已经到3.14) 这样内核源码就已经获取完成。 接下来就是内核编译了。依次执行下面的命令
  1. export CROSS_COMPILE=/blog/toolchain/gcc-linaro-arm-linux-gnueabihf-4.8-2013.10_linux/bin/arm-linux-gnueabihf-
复制代码
(前面有执行过此处可以不用再执行)
  1. make ARCH=arm socfpga_defconfig

    make ARCH=arm zImage LOADADDR=0x8000

复制代码
此时可以在内核的arch/arm/boot下看到刚编译出来的zImage文件。可以替换掉Boot SD card中的zImage文件后插入板上boot。 另外可以执行make dtbs 命令,会在arch/arm/boot/dts 目录中找到socfpga_cyclone5.dtb文件。将此文件更名为socfpga.dtb替换掉SD卡中的dtb文件也可以参与boot。 当然这里的dtb文件并不是完全符合DE1_SoC的板级描述,后面会介绍具体作些修改动作。 当然很多人对于dts文件的作用并不是那么清楚,后面也会根据frame_buffer的image编译和相关源码分析dts文件及在内核驱动中如何使用。 附: 如果有多次编译内核的需要,不每次打开电脑或者终端输入export 环境变量的方式比较麻烦,这里介绍每次打开终端自动添加环境变量的方法: 使用编辑器打开 /etc/profile,在文件末尾添加语句
  1. export CROSS_COMPILE=arm-none-linux-gnueabi-

    export ARCH=arm

    export LOADADDR=0x8000

复制代码
这样在编译内核时候直接执行下面两条命令
  1. make socfpga_defconfig

    make zImage

复制代码
即可编译内核
此帖出自FPGA/CPLD论坛

最新回复

楼主,我想问下为什么你的其他帖子我都看不到啊  详情 回复 发表于 2018-4-14 23:25
点赞 关注(2)
个人签名生活就是油盐酱醋再加一点糖,快活就是一天到晚乐呵呵的忙
===================================
做一个简单的人,踏实而务实,不沉溺幻想,不庸人自扰
 

回复
举报

11

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
学习学习
此帖出自FPGA/CPLD论坛
 
 

回复

11

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
学习
此帖出自FPGA/CPLD论坛
 
 
 

回复

1025

帖子

1

TA的资源

纯净的硅(高级)

4
 
顶起
此帖出自FPGA/CPLD论坛
 
 
 

回复

41

帖子

1

TA的资源

一粒金砂(中级)

5
 
git clone gits://git.rocketboards.org/linux-socfpga.git并不能成功啊
此帖出自FPGA/CPLD论坛
 
 
 

回复

1891

帖子

2

TA的资源

纯净的硅(中级)

6
 
Look   look
此帖出自FPGA/CPLD论坛
个人签名
分享铸就美好未来。。。




 
 
 

回复

105

帖子

0

TA的资源

一粒金砂(中级)

7
 
学习了
此帖出自FPGA/CPLD论坛
 
 
 

回复

2

帖子

0

TA的资源

一粒金砂(初级)

8
 
qq1042248300 发表于 2015-4-12 11:57
git clone gits://git.rocketboards.org/linux-socfpga.git并不能成功啊

试试 git clone git://git.rocketboards.org/linux-socfpga.git
此帖出自FPGA/CPLD论坛
 
 
 

回复

2

帖子

0

TA的资源

一粒金砂(初级)

9
 
请问楼主frame_buffer的image编译成功了吗,怎么配置的?
我编译的framebuffer image没有显示啊啊
此帖出自FPGA/CPLD论坛

点评

请问您现在解决了显示的问题吗?我也遇到同样的问题,现在不知道该如何解决。  详情 回复 发表于 2016-7-24 21:13
 
 
 

回复

57

帖子

0

TA的资源

一粒金砂(中级)

10
 
学习学习
此帖出自FPGA/CPLD论坛
个人签名坚持坚持再坚持。
 
 
 

回复

29

帖子

0

TA的资源

一粒金砂(中级)

11
 
yun4161987 发表于 2016-1-26 15:57
请问楼主frame_buffer的image编译成功了吗,怎么配置的?
我编译的framebuffer image没有显示啊啊

请问您现在解决了显示的问题吗?我也遇到同样的问题,现在不知道该如何解决。
此帖出自FPGA/CPLD论坛
 
 
 

回复

356

帖子

0

TA的资源

一粒金砂(中级)

12
 
虽然看不懂,顶起。
此帖出自FPGA/CPLD论坛
 
 
 

回复

1

帖子

0

TA的资源

一粒金砂(初级)

13
 
代码不对,git clone git://git.rocketboards.org/linux-socfpga.git
此帖出自FPGA/CPLD论坛
 
 
 

回复

35

帖子

0

TA的资源

一粒金砂(中级)

14
 
提供一份内核编译和SOC调试的详细资料,基于DE1-SOC开发板

SoC-FPGA Design Guide.pdf

4.16 MB, 下载次数: 560

此帖出自FPGA/CPLD论坛
 
 
 

回复

3

帖子

0

TA的资源

一粒金砂(初级)

15
 
thank you,谢谢分享。
此帖出自FPGA/CPLD论坛
 
 
 

回复

42

帖子

0

TA的资源

一粒金砂(中级)

16
 
git checkout -b kenel_3.12 origin/socfpga-3.12这个命令执行不了啊
此帖出自FPGA/CPLD论坛
 
 
 

回复

42

帖子

0

TA的资源

一粒金砂(中级)

17
 
如果只是生成一个.ko文件应该怎样做
此帖出自FPGA/CPLD论坛

点评

#这个makefile,在一个文件夹内放上.c和Makefile,之后make ifeq ($(KERNELRELEASE),) #KERNELDIR ?= /your/target/source/directory/ KERNELDIR ?=~/Documents/sourceCodeOriginal/linux-socfpga-socfpga-4.15  详情 回复 发表于 2018-3-14 09:21
 
 
 

回复

11

帖子

0

TA的资源

一粒金砂(中级)

18
 
如果更新一些设备驱动,比如增加一个88e1111前兆网卡,怎么进行make socfpga_defconfig?目前还没能找到相应资料
此帖出自FPGA/CPLD论坛
 
 
 

回复

11

帖子

0

TA的资源

一粒金砂(中级)

19
 
xiyanghong 发表于 2017-3-16 20:12
如果只是生成一个.ko文件应该怎样做

#这个makefile,在一个文件夹内放上.c和Makefile,之后make
ifeq ($(KERNELRELEASE),)

#KERNELDIR ?= /your/target/source/directory/
KERNELDIR ?=~/Documents/sourceCodeOriginal/linux-socfpga-socfpga-4.15/     #这个是自己源码的路径
PWD := $(shell pwd)


modules:
        $(MAKE) -C $(KERNELDIR) M=$(PWD) modules

modules_install:
        $(MAKE) -C $(KERNELDIR) M=$(PWD) modules_install

clean:
        rm -rf *.o *~ core .depend .*.cmd *.ko *.mod.c .tmp_versions  Module* module*

.PHONY: modules modules_install clean

else
    obj-m := hello.o    #注意这个和.c文件的文件名保持一致,如我是hello.c,这里写hello.o
endif

此帖出自FPGA/CPLD论坛
 
 
 

回复

2

帖子

0

TA的资源

一粒金砂(初级)

20
 
楼主,我想问下为什么你的其他帖子我都看不到啊
此帖出自FPGA/CPLD论坛
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/6 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表