Firefly开源社区

标题: Firefly Ubuntu开发入门之(1)自已编译内核 [打印本页]

作者: 牛头    时间: 2016-9-18 10:45
标题: Firefly Ubuntu开发入门之(1)自已编译内核
本帖最后由 牛头 于 2016-9-24 17:34 编辑

     很多朋友希望在拿到Firelfy发布的Ubuntu镜像后,会想自己加驱动或自己编译的内核等等,但做的过程中难免出现各种各样的问题。网上各种教程都不那么切题,讲解都不是那么细致,让人感到迷茫,又或许是无助。Firefly团队努力地在帮助开发者打破此困局,整理策划了系列教程,让开发者可以通过Firefly开源平台可以快速上手开发,并快速打造出成熟产品。
    创新 开源 分享 定制”是我们的口号,我们一直在努力。

    那么请跟着我的脚步上路吧!
    一、Linux主机安装内核开发包
    Linux内核编译需要主机安装一些开发包,具体的开发工具有那些可以通过包名自行补脑。安装过程中需要留意开发包是否都有安装成功,若有开发包安装失败可以单独再重新安装。
sudo apt-get install build-essential lzop libncurses5-dev libssl-dev
    如果使用的是 64 位的 Ubuntu,还需要安装:
sudo apt-get install libc6:i386

    二、安装交叉编译工具链
    纯Linux开发的朋友可以通过Github单独下载交叉编译工具链,内核编译用到arm-eabi-4.6交叉编译工具链,下载链接为:
http://pan.baidu.com/s/1sl7v1EX
    下载好放到指定目录~/UbuntuDev/toolchain后解压:
mkdir ~/UbuntuDev/toolchain
cd ~/UbuntuDev/toolchain
tar -xvf arm-eabi-4.6.tar.gz
    如果是android开发者,可以直接按android SDK编译的方法编译SDK里的内核,android SDK里自带交叉编译工具链等。
    三、下载Firefly Linux内核源代码
    从Firefly github仓库下载kernel源代码:
cd ~/UbuntuDev
git clone https://github.com/T-Firefly/firefly-3.14-kernel
    至此主机安装了开发包,同时内核源码和交叉编译工具链都准备完毕。可谓是万事具备,只欠编译!GO!
    四、编译内核
    进入内核源码目录:
cd ~/UbuntuDev/firefly-3.14-kernel/
    设置ARCH环境变量,告诉编译器目标平台的架构:
export ARCH=arm
    设置交叉编译器
export CROSS_COMPILE=./../toolchain/arm-eabi-4.6/bin/arm-eabi-

    载入Firefly RK3288开发板内核配置
make firefly-rk3288_defconfig

    编译zImage,zImage是可以加载执行的二进制代码:
make -j4 zImage
    正常编译结束后,会在arch/arm/boot/目录生成zImage文件:

    编译DTB文件。dtb是.dts被DTC编译后的二进制格式的Device Tree描述,可由Linux内核解析。通常在我们为电路板制作NAND、SD启动image时,会为.dtb文件单独留下一个很小的区域以存放之,之后bootloader在引导kernel的过程中,会先读取该.dtb到内存。
make firefly-rk3288.dtb

    生成kernel.img文件
cat arch/arm/boot/zImage arch/arm/boot/dts/firefly-rk3288.dtb > zImage-dtb

mkkrnlimg -a zImage-dtb kernel.img

    当然你也可以这样去编译:
make -j8 firefly-rk3288.img
    编译出来的firefly-rk3288.img文件和上述步骤编译出来的是一样的。

    请不要问题我为什么要介绍这种编译方式,因为我是活雷锋。

    编译并安装模块,先在kernel目录创建modules_install目录,用于存放编译好的内核模块。
mkdir modules_install
make INSTALL_MOD_PATH=./modules_install modules_install

    现在的kernel和modules都已经编译完成,但还不能直接烧录到开发板运行,下一篇再讲如何让编译出来的内核在开发板上运行起来。

作者: 牛头    时间: 2016-9-18 10:45
本帖最后由 牛头 于 2016-9-24 17:37 编辑

有朋友说编译不通过,抱着为观众负责的态度,我又重新编译了一次,过程截图如下:
1、删除本地目录所有文件,再从官方git仓库重新检出代码

2、按教程开始准备编译内核

3、内核镜像顺利编译完成

4、生成dtb文件,之前教程有些笔误,已经更新

5、继续按教程做


之前12号提交的代码出了些问题,导致编译问题。
遇到编译问题的朋友请更新到最新的内核代码,最新的代码ID为:8fc3d070b5765b55dbb93067d1ef7f7fba04dbd5
作者: wangdongx40423p    时间: 2016-9-18 15:03
本帖最后由 wangdongx40423p 于 2016-9-18 15:04 编辑

加油啊,楼主,下面该怎么弄。内核现在启动不起来,starting kernel ......   就停止了。
作者: wangdongx40423p    时间: 2016-9-18 17:12
uboot用的那个版本的,2.17还是2.19的
作者: csersoft    时间: 2016-9-18 22:55
本帖最后由 csersoft 于 2016-9-18 23:01 编辑

咬文嚼字:自已
另外为什么每张图片下都有个

xxx.png (XX KB, 下载次数: 0)
下载附件

有点影响阅读体验啊

言归正传,感谢lz分享经验~

作者: readsa    时间: 2016-9-20 16:44


为啥我编译完zImage,没有出现zImage is ready的提示,直接就结束了啊?如上图。

并且arch/arm/boot 里面也是什么都没有

前面的交叉编译,环境变量,还有编译配置都是按要求设置好的,没有发现问题。
我也用export检查过了
作者: readsa    时间: 2016-9-20 17:04
再次执行make -j4 zImage后,提示以下错误:

我是直接新装的ubuntu16.04 然后按照这个帖子一步一步做的,没做别的任何步骤,是还需要安装别的包吗?
作者: csersoft    时间: 2016-9-20 19:32
跟楼上同样的问题,也是
  LD      drivers/built-in.o


之后就没有了。

基本包安装过了。
系统环境是虚拟机 Ubuntu 16.04 x64,CPU4核,内存8G。
请问下这是什么原因造成的呢?



作者: readsa    时间: 2016-9-20 23:48
csersoft 发表于 2016-9-20 19:32
跟楼上同样的问题,也是

之后就没有了。

我把Android4.4的sdk的kernel抽出来编译了一下,这次没有问题了,看来是官方给的这个内核有问题
作者: readsa    时间: 2016-9-20 23:54
本帖最后由 readsa 于 2016-9-21 00:42 编辑

大哥你这也搞错了吧,

应该是
make firefly-rk3288.dtb


而且在mkdir modules_install之前少了:
make modules

作者: 牛头    时间: 2016-9-21 10:16


看看是不是没有这个文件

作者: 牛头    时间: 2016-9-21 10:18
readsa 发表于 2016-9-20 23:54
大哥你这也搞错了吧,

应该是

你用的不是教程里的内核吧?我的截图里有DTC正确生成dtb的LOG,那文件名没有错的。
作者: csersoft    时间: 2016-9-21 10:22
本帖最后由 csersoft 于 2016-9-21 10:26 编辑
牛头 发表于 2016-9-21 10:16
看看是不是没有这个文件

这个不是主要问题,readsa说的是再次执行make -j4 zImage才出现的这些奇怪的错误,第一次是没有这些错误的。
LD      drivers/built-in.o

之后就结束了。我每次修改完编译环境重新make时都会make clean一下,所以没有第二次的错误。
昨天觉得是不是3.14的内核的最新提交导致的这个问题,于是去屏蔽了firmware/Makefile的55、56行。就是最新提交的firmware/brcm/目录下的新增的2个文件。
重新编译问题依旧。

作者: readsa    时间: 2016-9-21 10:25
牛头 发表于 2016-9-21 10:16
看看是不是没有这个文件

确实没有啊,但是github上直接浏览也没有啊
https://github.com/T-Firefly/firefly-3.14-kernel/tree/master/firmware/brcm
难道是需要编译出来的?
作者: 牛头    时间: 2016-9-21 10:43
readsa 发表于 2016-9-21 10:25
确实没有啊,但是github上直接浏览也没有啊
https://github.com/T-Firefly/firefly-3.14-kernel/tree/ma ...

我看看哈,我们开源内核就是要用户能自己用起来。
作者: readsa    时间: 2016-9-21 10:46
牛头 发表于 2016-9-21 10:43
我看看哈,我们开源内核就是要用户能自己用起来。

好!赞!这样才能让更多用户选择firefly!
作者: csersoft    时间: 2016-9-21 10:56
牛头 发表于 2016-9-21 10:43
我看看哈,我们开源内核就是要用户能自己用起来。

期待ing
作者: readsa    时间: 2016-9-21 12:14
csersoft 发表于 2016-9-20 19:32
跟楼上同样的问题,也是

之后就没有了。

androidsdk下 ,这一句之后是vmlinux,而他给的kernel文件夹里没有vmlinux,可能跟这个有关
作者: wangdongx40423p    时间: 2016-9-22 13:53
这个问题还解决了,我的编译完也是,没有zImage
作者: 牛头    时间: 2016-9-22 15:54
readsa 发表于 2016-9-21 12:14
androidsdk下 ,这一句之后是vmlinux,而他给的kernel文件夹里没有vmlinux,可能跟这个有关

vmlinux 是编译链接出来的,不是原本就有的。
作者: readsa    时间: 2016-9-22 17:22
牛头 发表于 2016-9-22 15:54
vmlinux 是编译链接出来的,不是原本就有的。

那么ubuntu的kernel和Android的kernel有区别吗?我把android4.4编译的kernel烧给ubuntu16.04后无法启动。

另外怎么查看androidsdk的kernel版本呢?ubuntu的kernel版本能查吗?不同版本的kernel能通用吗?
作者: csersoft    时间: 2016-9-22 17:29
本帖最后由 csersoft 于 2016-9-22 18:05 编辑
readsa 发表于 2016-9-22 17:22
那么ubuntu的kernel和Android的kernel有区别吗?我把android4.4编译的kernel烧给ubuntu16.04后无法启动。 ...

android的内核,可以下个android的终端,然后uname -a,其他linux系统包括ubuntu通用~
作者: readsa    时间: 2016-9-22 23:29
csersoft 发表于 2016-9-22 17:29
android的内核,可以下个android的终端,然后uname -a,其他linux系统包括ubuntu通用~

多谢哈 不过我试了终端uname貌似没有这个命令,我是cd proc以后,cat version得到的内核版本
作者: csersoft    时间: 2016-9-23 09:15
readsa 发表于 2016-9-22 23:29
多谢哈 不过我试了终端uname貌似没有这个命令,我是cd proc以后,cat version得到的内核版本

没有的话,可以试着装个busybox
作者: csersoft    时间: 2016-9-23 13:54
牛头 发表于 2016-9-22 15:54
vmlinux 是编译链接出来的,不是原本就有的。

不知版主找到编译内核中断的原因了吗?
作者: 牛头    时间: 2016-9-23 14:11
不知道你那边是什么原因,我这里没有问题。看看2楼的贴子。
作者: csersoft    时间: 2016-9-23 15:23
牛头 发表于 2016-9-23 14:11
不知道你那边是什么原因,我这里没有问题。看看2楼的贴子。

感谢回复,待会试试单线程编译看看。
作者: csersoft    时间: 2016-9-23 21:15
本帖最后由 csersoft 于 2016-9-23 21:20 编辑

好像发现问题所在了,在windows用的是TortoiseGit克隆的,但是克隆完成后总有14个文件的变更。


试了好几次删除掉版本库,再克隆,每次结果都一样。而且这些变更的文件无法通过检出、拉取、还原功能恢复。
另外看了下日志,发现有非人工修改的迹象:

不清楚问题原因,但总归是有文件缺失。

作者: csersoft    时间: 2016-9-23 21:59
本帖最后由 csersoft 于 2016-9-23 22:23 编辑

终于编译zImage成功,分享下心得:
1、不要在windows用git克隆版本库,可能是因为windows下的git问题较多。
2、如果在windows克隆了,也不要紧。可以在windows下打包版本库目录(包含.git目录),然后复制到linux下解包。并切换到版本库目录里执行git reset --hard即可(该命令在windows执行,变更的文件也不会恢复,所以猜测是windows下git的问题)。
3、交叉编译器版本不用那么严苛,官方wiki给的是android-4.4.2_r1,实际编译我用的android-4.4.2_r2
4、编译过程中如果还是中断或者遇到
make[1]: *** No rule to make target 'firmware/brcm/brcmfmac4339-sdio.bin', needed by 'firmware/brcm/brcmfmac4339-sdio.bin.gen.o'。 停止。

这时可以考虑注释掉firmware/Makefile的55、56行:
  1. # fw-shipped-$(CONFIG_BRCMFMAC) += brcm/brcmfmac4339-sdio.bin
  2. # fw-shipped-$(CONFIG_BRCMFMAC) += brcm/brcmfmac4339-sdio.txt
复制代码





作者: dalton.lai    时间: 2016-9-23 22:00
本帖最后由 dalton.lai 于 2016-9-24 15:06 编辑
牛头 发表于 2016-9-23 14:11
不知道你那边是什么原因,我这里没有问题。看看2楼的贴子。

sorry, I have no Chinese IME in this NB.

I have ever post this issue at 9/14/2016 09:58:54 in English forum, too.

make[1]: *** No rule to make target 'firmware/brcm/brcmfmac4339-sdio.bin', needed by 'firmware/brcm/brcmfmac4339-sdio.bin.gen.o'.  Stop.

https://wireless.wiki.kernel.org/en/users/Drivers/brcm80211

Both brcmsmac and brcmfmac drivers require firmware files that need to be separately downloaded. Firmware is available from the Linux firmware repository at:I have no idea if this is the root casue~

The test result is failed....
Kernel compiled pass, but crashed during boot.....

And, further one, I found if we execute "make distclean", below file will be deleted.
/firefly-3.14-kernel/firmware/brcm/brcmfmac4339-sdio.txt

Thanks

brcmfmac4339-sdio.tar.gz

280.05 KB, 下载次数: 23, 下载积分: 灯泡 -1 , 经验 -1


作者: 牛头    时间: 2016-9-24 10:55
dalton.lai 发表于 2016-9-23 22:00
sorry, I have no Chinese IME in this NB.

I have ever post this issue at 9/14/2016 09:58:54 in E ...

1、是否修改过内核配置??
2、用的内核代码是否为 git@github.com:T-Firefly/firefly-3.14-kernel.git ??
作者: 牛头    时间: 2016-9-24 10:55
dalton.lai 发表于 2016-9-23 22:00
sorry, I have no Chinese IME in this NB.

I have ever post this issue at 9/14/2016 09:58:54 in E ...

1、是否修改过内核配置??
2、用的内核代码是否为 git@github.com:T-Firefly/firefly-3.14-kernel.git ??
作者: readsa    时间: 2016-9-24 11:09
牛头 发表于 2016-9-24 10:55
1、是否修改过内核配置??
2、用的内核代码是否为 :T-Firefly/firefly-3.14-kernel.git ??

我没修改过的,我是把brcm文件夹删掉,并且在Makefile里把brcm两行屏蔽了就能过去了。

这里我也感到很奇怪,除了brcm以外,所有firmware下面的文件都是.bin.ihex结尾的,只有brcm下是两个.txt,这怎么回事呢?
作者: dalton.lai    时间: 2016-9-24 12:20
牛头 发表于 2016-9-24 10:55
1、是否修改过内核配置??
2、用的内核代码是否为 :T-Firefly/firefly-3.14-kernel.git ??


No, I have not changed anything, just follow the steps you provided~
作者: 牛头    时间: 2016-9-24 15:12


我这里没有这个目录,能正常编译通过。
感觉编译不过的内核代码,不是教程里提到的代码。

作者: dalton.lai    时间: 2016-9-24 16:38
本帖最后由 dalton.lai 于 2016-9-24 17:11 编辑
牛头 发表于 2016-9-24 15:12
我这里没有这个目录,能正常编译通过。
感觉编译不过的内核代码,不是教程里提到的代码。

thanks a lot for your help to check this
seems we have different code base

in my site, we have:
https://github.com/T-Firefly/firefly-3.14-kernel/tree/master/firmware/brcm

the latest one was committed by zouxf on Sep. 12, 2016
the commit digest is: f1d612a
作者: 牛头    时间: 2016-9-24 17:21
本帖最后由 牛头 于 2016-9-24 17:33 编辑
dalton.lai 发表于 2016-9-24 16:38
thanks a lot for your help to check this
seems we have different code base

确实是有问题存在,但我这里的代码少了最新的提及,故没有问题现象。
请更新到最新代码,问题已经解决,最新的提交ID:
8fc3d070b5765b55dbb93067d1ef7f7fba04dbd5
作者: 牛头    时间: 2016-9-24 17:22
readsa 发表于 2016-9-24 11:09
我没修改过的,我是把brcm文件夹删掉,并且在Makefile里把brcm两行屏蔽了就能过去了。

这里我也感到很 ...

确实是有问题存在,请更新到最新代码,问题已经解决。
作者: csersoft    时间: 2016-9-24 17:31
牛头 发表于 2016-9-24 17:21
确实是有问题存在,但我这里的代码少了最新的提及,故没有问题现象。
请更新到最新代码,问题已经解决, ...

最新提交应该是8fc3d070b5765b55dbb93067d1ef7f7fba04dbd5吧,f1d612a0af756bf8fcccff46d06b816f6de8418c还是之前少文件必须屏蔽Makefile的。
作者: 牛头    时间: 2016-9-24 17:33
csersoft 发表于 2016-9-24 17:31
最新提交应该是8fc3d070b5765b55dbb93067d1ef7f7fba04dbd5吧,f1d612a0af756bf8fcccff46d06b816f6de8418c ...

谢谢提醒,已经修改过来了。
作者: readsa    时间: 2016-9-24 19:50
牛头 发表于 2016-9-24 17:22
确实是有问题存在,请更新到最新代码,问题已经解决。

哎哟word妈啊,可算解决了。这可卡了我一个初学者快一个星期的时间了。。。
作者: 牛头    时间: 2016-9-25 22:25
readsa 发表于 2016-9-24 19:50
哎哟word妈啊,可算解决了。这可卡了我一个初学者快一个星期的时间了。。。

我写教程时github代码还没更新,没想到在中间的时间更新了个有问题的代码。
作者: dalton.lai    时间: 2016-9-26 08:34
本帖最后由 dalton.lai 于 2016-9-26 13:19 编辑

Ha, thanks a lot for your great help.
It can compile successfully, I'll test it on the board.

Thanks

here comes the test result as below:

1. with ubuntu 14.04 rootfs, successfully boot into system with wifi work well
2. with ubuntu 16.04 rootfs, boot into rootfs with below hang-up message:
    brcmfmac: brcmf_p2p_create_p2pdev: timeout occurred

I have no idea if this is driver revision issue, so I check the driver folder, /drivers/net.
There are totally four wifi drivers:
wireless
wireless-3.8
wireless-3.16
wireless-3.18

In kernel makefile, we have this "export WIFIVERSION=-3.8"
In /net makefile, we have "obj-$(CONFIG_WLAN) += wireless$(WIFIVERSION)/"
In /drivers/net/wireless-3.8/brcm80211/brcmfmac, we have:
ccflags-y += \
    -Idrivers/net/wireless-3.8/brcm80211/brcmfmac    \
    -Idrivers/net/wireless-3.8/brcm80211/include

so, the question is: should we apply wireless driver 3.16 or 3.18 (or other one) for ubuntu 16.04 rootfs?
Thanks a lot.

作者: readsa    时间: 2016-9-26 15:00
牛头 发表于 2016-9-25 22:25
我写教程时github代码还没更新,没想到在中间的时间更新了个有问题的代码。

Some problems still exist...
It seems you have not added the new files into a file list.  So if you run 'make clean', 4339.bin will be deleted and needs to be added again.
作者: dalton.lai    时间: 2016-10-10 10:38
hi 牛头,

I have test this compilation again, and found one more question.
There are 5 partitions in old firmware, and dtb file is concatenated into resource.img.
But there are only three partitions in new firmware, and dtb file is concatenated into zImage.

Here comes the make file in detail:
kernel.img: zImage
        $(Q)$(srctree)/mkkrnlimg $(objtree)/arch/arm/boot/zImage $(objtree)/kernel.img >/dev/null
        @echo '  Image:  kernel.img is ready'

%_kernel.img: %.dtb zImage
        $(Q)cat $(objtree)/arch/arm/boot/zImage $(objtree)/arch/arm/boot/dts/$*.dtb > $(objtree)/zImage-dtb && \
        $(srctree)/mkkrnlimg $(objtree)/zImage-dtb $(objtree)/kernel.img >/dev/null && \
        rm -f $(objtree)/zImage-dtb
        @echo '  Image:  kernel.img (with $*.dtb) is ready'

LOGO := $(notdir $(wildcard $(srctree)/logo.bmp))
%.img: %.dtb kernel.img $(LOGO)
        $(Q)$(srctree)/resource_tool $(objtree)/arch/arm/boot/dts/$*.dtb $(LOGO)
        @echo '  Image:  resource.img (with $*.dtb $(LOGO)) is ready'

I have try to enable dtb in zImage by change below kernel options:
Boot options => Build a concatenated zImage/dtb by default
Boot options => Use appended device tree blob to zImage (EXPERIMENTAL)

In your description, we have two way to make our kernel.img:
1. dtb file in zImage
make -j4 zImage
make firefly-rk3288.dtb
cat arch/arm/boot/zImage arch/arm/boot/dts/firefly-rk3288.dtb > zImage-dtb
mkkrnlimg -a zImage-dtb kernel.img

ERROR messages:
mkkrnlimg V20120220
cmd:-a zImage-dtb [kernel.img]
Makimg kernel Image: zImage-dtb for MID!
input open NG !

2. dtb file in resource.img
make -j8 firefly-rk3288.img

So, the question need your help is:
How should I do to update the kernel in 3 partitions firmware?
1. how to enable dtb with zImage in kernel options?
2. how to fix the issue with mkkrnlimg?

Thanks a lot.
作者: dreamsong2046    时间: 2016-10-12 22:27
请问能直接编译android sdk里的linux内核来运行吗
作者: Hailong    时间: 2016-10-19 15:10
readsa 发表于 2016-9-20 23:48
我把Android4.4的sdk的kernel抽出来编译了一下,这次没有问题了,看来是官方给的这个内核有问题

你的怎么解决的
作者: yanbib    时间: 2016-11-2 16:11
执行make -j8 firefly-rk3288.img的时候 就出现错误 不能生成kernel.img
/home/yanbib/Documents/UbuntuDev/firefly-3.14-kernel-master/arch/arm/Makefile:356: recipe for target 'kernel.img' failed
make: *** [kernel.img] Error 127

作者: talugirl    时间: 2016-11-22 10:15
用了最新版的,但还是没有编译出zImage。firefly-3.14-kernel-8fc3d070b5765b55dbb93067d1ef7f7fba04dbd5。我用的是linux系统,ubuntu14.04.
作者: talugirl    时间: 2016-11-22 16:45
运行到最后一步的时候,出现cp: cannot stat module.order.请问博主这是什么问题。
作者: 499563980    时间: 2016-11-23 18:24
为什么按照文档编译出来的boot.img ,升级进去,HDMI没有声音输出呢?
kernel log中HDMI的声卡是注册成功的。
[    3.575240] rockchip-drm display-subsystem.4: rk drm load success
[    3.581643] platform ff500000.usb: Driver ehci-platform requests probe deferral
[    3.589623] rockchip-hdmi-audio hdmi_audio.6: dw-hdmi-hifi <-> ff890000.i2s mapping ok
[    3.597665] cpu dai set fmt 16385
[    3.601020] set cpu dai to master mode
[    3.605150] input: RockchipHDMI HDMI Jack as /devices/hdmi_audio.6/sound/card0/input2
[    3.613253] rockchip-hdmi-audio hdmi_audio.6: hdmi audio init success.
[    3.619949] platform ff500000.usb: Driver ehci-platform requests probe deferral
[    3.627914] input: gpio-keys.12 as /devices/gpio-keys.12/input/input3
[    3.634525] platform ff500000.usb: Driver ehci-platform requests probe deferral
[    3.634582] drivers/rtc/hctosys.c: unable to open rtc device (rtc0)
[    3.641797] ALSA device list:
[    3.641804]   #0: RockchipHDMI
[    3.654923] Freeing unused kernel memory: 504K (c0d00000 - c0d7e000)
Loading, please wait...
[    3.676073] mmc0: BKOPS_EN bit is not set
[    3.682384] mmc_host mmc0: Bus speed (slot 0) = 50000000Hz (slot req 52000000Hz, actual 50000000HZ div = 0)
[    3.693185] udevd[120]: starting version 175

我升级Firefly-rk3288_Ubuntu_1604_2016_10261641_NO_VGA_Beta.img这一版,HDMI就有声音,是不是https://github.com/T-Firefly/firefly-3.14-kernel这个版本的HDMI声音还没调试好?
作者: lengji22    时间: 2016-11-26 16:22
exbot@ubuntu:~/UbuntuDev/firefly-3.14-kernel-1$ make -j8 firefly-rk3288.img
Makefile:634: Cannot use CONFIG_CC_STACKPROTECTOR_STRONG: -fstack-protector-strong not supported by compiler
./../toolchain/arm-eabi-4.6/bin/arm-eabi-gcc: 1: ./../toolchain/arm-eabi-4.6/bin/arm-eabi-gcc: Syntax error: "(" unexpected
  CHK     include/config/kernel.release
  CHK     include/generated/uapi/linux/version.h
  CC      scripts/mod/empty.o
  HOSTCC  scripts/kallsyms
  HOSTCC  scripts/conmakehash
  HOSTCC  scripts/recordmcount
  CC      scripts/mod/devicetable-offsets.s
./../toolchain/arm-eabi-4.6/bin/arm-eabi-gcc: 1: ./../toolchain/arm-eabi-4.6/bin/arm-eabi-gcc:   HOSTCC  scripts/sortextable
  CHK     include/generated/utsrelease.h
Syntax error: "(" unexpected
make[2]: *** [scripts/mod/empty.o] Error 2
make[2]: *** Waiting for unfinished jobs....
./../toolchain/arm-eabi-4.6/bin/arm-eabi-gcc: 1: ./../toolchain/arm-eabi-4.6/bin/arm-eabi-gcc: Syntax error: "(" unexpected
make[2]: *** [scripts/mod/devicetable-offsets.s] Error 2
make[1]: *** [scripts/mod] Error 2
make[1]: *** Waiting for unfinished jobs....
  HOSTCC  scripts/bin2c
make[1]: `include/generated/mach-types.h' is up to date.
  CC      kernel/bounds.s
./../toolchain/arm-eabi-4.6/bin/arm-eabi-gcc: 1: ./../toolchain/arm-eabi-4.6/bin/arm-eabi-gcc: Syntax error: "(" unexpected
make[1]: *** [kernel/bounds.s] Error 2
make: *** [prepare0] Error 2
make: *** Waiting for unfinished jobs....
make: *** [scripts] Error 2

求解答
作者: lengji22    时间: 2016-11-26 16:26
lengji22 发表于 2016-11-26 16:22
exbot@ubuntu:~/UbuntuDev/firefly-3.14-kernel-1$ make -j8 firefly-rk3288.img
Makefile:634: Cannot us ...

按照教程做的
作者: lengji22    时间: 2016-11-28 12:36
大神,按照上面的步骤,出现:
exbot@ubuntu:~/UbuntuDev/toolchain/firefly-3.14-kernel$ export ARCH=arm
exbot@ubuntu:~/UbuntuDev/toolchain/firefly-3.14-kernel$ export CROSS_COMPILE=./../arm-eabi-4.6/bin/arm-eabi-
exbot@ubuntu:~/UbuntuDev/toolchain/firefly-3.14-kernel$ make firefly-rk3288_defconfig
#
# configuration written to .config
#
exbot@ubuntu:~/UbuntuDev/toolchain/firefly-3.14-kernel$ make -j8 firefly-rk3288.img
Makefile:634: Cannot use CONFIG_CC_STACKPROTECTOR_STRONG: -fstack-protector-strong not supported by compiler
./../arm-eabi-4.6/bin/arm-eabi-gcc: 1: ./../arm-eabi-4.6/bin/arm-eabi-gcc: Syntax error: "(" unexpected
scripts/kconfig/conf --silentoldconfig Kconfig
Makefile:634: Cannot use CONFIG_CC_STACKPROTECTOR_STRONG: -fstack-protector-strong not supported by compiler
./../arm-eabi-4.6/bin/arm-eabi-gcc: 1: ./../arm-eabi-4.6/bin/arm-eabi-gcc: Syntax error: "(" unexpected
  CHK     include/config/kernel.release
  CHK     include/generated/uapi/linux/version.h
  HOSTCC  scripts/kallsyms
  CC      scripts/mod/empty.o
  CC      scripts/mod/devicetable-offsets.s
  HOSTCC  scripts/conmakehash
  HOSTCC  scripts/recordmcount
./../arm-eabi-4.6/bin/arm-eabi-gcc: 1: ./../arm-eabi-4.6/bin/arm-eabi-gcc: Syntax error: "(" unexpected
./../arm-eabi-4.6/bin/arm-eabi-gcc: 1: ./../arm-eabi-4.6/bin/arm-eabi-gcc: make[2]: *** [scripts/mod/empty.o] Error 2
make[2]: *** Waiting for unfinished jobs....
Syntax error: "(" unexpected
make[2]: *** [scripts/mod/devicetable-offsets.s] Error 2
make[1]: *** [scripts/mod] Error 2
make[1]: *** Waiting for unfinished jobs....
  HOSTCC  scripts/sortextable
  CHK     include/generated/utsrelease.h
make[1]: `include/generated/mach-types.h' is up to date.
  CC      kernel/bounds.s
./../arm-eabi-4.6/bin/arm-eabi-gcc: 1: ./../arm-eabi-4.6/bin/arm-eabi-gcc: Syntax error: "(" unexpected
make[1]: *** [kernel/bounds.s] Error 2
make: *** [prepare0] Error 2
make: *** Waiting for unfinished jobs....
make: *** [scripts] Error 2
exbot@ubuntu:~/UbuntuDev/toolchain/firefly-3.14-kernel$
不知道原因,,,,,求助
作者: CraftHeart    时间: 2016-11-30 15:25
本帖最后由 CraftHeart 于 2016-11-30 15:26 编辑

我前面的步骤都能正常通过,求解为什么在mkkrnlimg 时报错;mkkrnlimg command not

捕获.PNG (114.29 KB, 下载次数: 72)

捕获.PNG

作者: brian1611    时间: 2016-12-12 12:47
老大, 問一問幾個常識性問題
我在WIKI看到內核跟主線內核, 區別在哪?
另外, 我手上的板本身是在跑3.10.0 ubuntu 14.04, 想把它的內核升級為4.4, 應該看哪幾個教學?

作者: peak9527    时间: 2016-12-12 16:48
https://github.com/T-Firefly/firefly-3.14-kernel
该源码对应固件那个版本的,4.4还是5.1的,为为什么的还有的版本是5.0呢?
作者: rocksing    时间: 2017-1-2 21:41
make -j4 zImage 成功。
接下来make firefly-rk3288.dtb失败,请问什么原因

edm@ubuntu:~/UbuntuDev/firefly-3.14-kernel-master$ make firefly-rk3288.dtb
  DTC     arch/arm/boot/dts/firefly-rk3288.dtb
arch/arm/boot/dts/firefly-rk3288.dts:14:46: fatal error: dt-bindings/clock/rockchip,rk808.h: No such file or directory
compilation terminated.
make[1]: *** [arch/arm/boot/dts/firefly-rk3288.dtb] Error 1
make: *** [firefly-rk3288.dtb] Error 2


作者: iamlook    时间: 2017-1-4 15:45
版主大人, 这个内核menuconfig里Virtualization项是空的...   如果想要做虚拟化, 装KVM的话怎么弄呢?
作者: 遗忘的小石头    时间: 2017-2-16 12:24
本帖最后由 遗忘的小石头 于 2017-2-16 13:00 编辑
rocksing 发表于 2017-1-2 21:41
make -j4 zImage 成功。
接下来make firefly-rk3288.dtb失败,请问什么原因

这个问题解决了吗?我也遇到了和你一样的问题?根据错误提示,说是缺少了rockchip,rk808.h这个库文件,但是我按照路径查找,能找到这个文件啊。


360桌面截图20170216125956.jpg (62.63 KB, 下载次数: 74)

360桌面截图20170216125956.jpg

作者: lixinle    时间: 2017-2-16 14:09
遗忘的小石头 发表于 2017-2-16 12:24
这个问题解决了吗?我也遇到了和你一样的问题?根据错误提示,说是缺少了rockchip,rk808.h这个库文件,但 ...

我也是遇到这样的问题呢
作者: 遗忘的小石头    时间: 2017-2-16 14:30
lixinle 发表于 2017-2-16 14:09
我也是遇到这样的问题呢

我解决了编译问题,但是具体问题没有解决
,这个是因为指定的库文件指定到,我也不知道是什么原因。
但是,我把内核根目录下的include\dt-bindings里面的库文件全部拷贝到了arch\arm\boot\dts\include里面去了,就能编译通过了。

360桌面截图20170216142946.jpg (71.77 KB, 下载次数: 106)

360桌面截图20170216142946.jpg

作者: lixinle    时间: 2017-2-17 11:52
遗忘的小石头 发表于 2017-2-16 14:30
我解决了编译问题,但是具体问题没有解决
,这个是因为指定的库文件指定到,我也不知道是什么原因。
但 ...

谢谢,我在arch\arm\boot\dts\include下,创建了一个指向内核根目录下的include\dt-bindings软链接也编译过去了。
作者: rkrkr    时间: 2017-2-21 19:29
mkkrnlimg -a zImage-dtb kernel.img
这里直接执行,无法执行,提示命令无法找到,目前只能采用  ./mkkrnlimg zImage-dtb kernel.img 的方式执行,是否教程有误?

作者: rkrkr    时间: 2017-2-23 11:00
mkdir modules_install
make INSTALL_MOD_PATH=./modules_install modules_install
执行这一步之前需要执行  make modules
版主是否有必要补全
作者: maplblue    时间: 2017-2-25 14:56
编译并安装模块,先在kernel目录创建modules_install目录,用于存放编译好的内核模块。
make modules  
这一步缺少了下面的两部都不能执行
mkdir modules_install
make INSTALL_MOD_PATH=./modules_install modules_install

作者: maplblue    时间: 2017-3-7 10:31
楼主,mkkrnlimg出现input Open Ng的问题怎么解决?
网上有人说64位系统下执行32位程序会出现问题,需要安装libc6:i386,但是已经按照教程里的安装了libc6:i386。
./mkkrnlimg -a zImage-dtb kernel.img

mkkrnlimg V20120220
cmd:-a zImage-dtb [kernel.img]
Makimg kernel Image: zImage-dtb for MID!
input open NG !

作者: h.m_001@163.com    时间: 2017-3-29 10:35
求助,为什么我按照流程一步步做下去,最后在make modules时出错,是编译出错了,怎么办?
PS : 我用的是最新代码。
作者: 22222    时间: 2017-3-29 11:10
h.m_001@163.com 发表于 2017-3-29 10:35
求助,为什么我按照流程一步步做下去,最后在make modules时出错,是编译出错了,怎么办?
PS : 我用的是 ...

我make modules也报错
作者: chenxuying123    时间: 2017-4-10 10:30
本帖最后由 chenxuying123 于 2017-4-10 10:32 编辑
楼主,mkkrnlimg出现input Open Ng的问题怎么解决?
网上有人说64位系统下执行32位程序会出现问题,需要安装libc6:i386,但是已经按照教程里的安装了libc6:i386。
./mkkrnlimg -a zImage-dtb kernel.img

mkkrnlimg V20120220
cmd:-a zImage-dtb [kernel.img]
Makimg kernel Image: zImage-dtb for MID!
input open NG !

我也是出现这样的问题啊,楼上是怎么解决的啊?
作者: z3j6w9    时间: 2017-5-6 10:48
本帖最后由 z3j6w9 于 2017-5-6 11:18 编辑

root@zhang-HP-Pro-3330-MT:~/proj/firefly-rk3288-kernel# make INSTALL_MOD_PATH=./modules_install modules_install
cp: 无法获取"/root/proj/firefly-rk3288-kernel/modules.builtin" 的文件状态(stat): 没有那个文件或目录
make: *** [_modinst_] 错误 1

最后一步的时候出错了,提示缺少了某个文件,这个有人遇到么。

代码信息如下,已经是更新到最新的代码
root@zhang-HP-Pro-3330-MT:~/proj/firefly-rk3288-kernel# git show
commit 888979adc1a44e98a7d2b5b69936a0705052e331
Author: Firefly-RK3288 <service@t-firefly.com>


作者: z3j6w9    时间: 2017-5-6 11:29
z3j6w9 发表于 2017-5-6 10:48
root@zhang-HP-Pro-3330-MT:~/proj/firefly-rk3288-kernel# make INSTALL_MOD_PATH=./modules_install modu ...

最后这个步骤没有执行,执行生成了boot.img,内核启动成功,可以看到内核的版本,gcc版本和编译的时间。
作者: 18208150715    时间: 2017-5-27 15:55
恭喜 成功了就好 一路看帖到最后一页 才发现上面的问题 大多我也遇见过
作者: jasmine19950409    时间: 2017-6-3 13:21
求助,用arm-linux-gcc交叉编译器怎么设置环境变量啊?
作者: infozt@126.com    时间: 2017-6-11 23:51
牛头,编译出来的make INSTALL_MOD_PATH=./modules_install modules_install后,它里面的内核是如何打包到kernel.img中的呢!
作者: hotstone    时间: 2017-6-15 11:04
适用于reload开发板么?
作者: kgp00213    时间: 2017-7-20 22:25
csersoft 发表于 2016-9-23 21:15
好像发现问题所在了,在windows用的是TortoiseGit克隆的,但是克隆完成后总有14个文件的变更。

windows 环境对大小写不敏感,所以,windows git出来的文件 ,比如 ra.txt 和Ra.txt,在windows下就会覆盖,或报错。 不是windows下 git的问题,而是windows对大小写不敏感造成的。
作者: zhangjy46    时间: 2017-7-31 19:54
wangdongx40423p 发表于 2016-9-18 15:03
加油啊,楼主,下面该怎么弄。内核现在启动不起来,starting kernel ......   就停止了。

请问你是怎么解决的分享下,我现在也碰到了。
作者: 可能已经注册    时间: 2017-8-22 14:20

牛哥,这是什么情况啊?前面编译一直没有问题。我只是把dts里面spi0的status改为okay,就这样了。


作者: 小默jiang    时间: 2017-9-13 15:00
我按照步骤下来,卡住 kernel, 能帮我分析下是什么问题吗

log.png (66.72 KB, 下载次数: 84)

log.png

作者: 老牛非老牛    时间: 2017-9-26 16:16
按照步骤来操作,好多问题啊。版主没遇到?
作者: 老牛非老牛    时间: 2017-9-26 16:17
按照步骤来操作,好多问题啊。版主没遇到?
作者: linxi_hnh    时间: 2017-11-10 13:37
好文章,支持一下
作者: linxi_hnh    时间: 2017-11-10 17:06
@大牛:
mkdir modules_install
这步是干什么的? 后面怎么没有见用到呢?谢谢
作者: simonyuan    时间: 2017-11-23 10:45
same question???
seems need update the rfs but not sure
作者: r37734    时间: 2017-11-26 17:28
download failed
Oracle JDK 6 is NOT installed.
dpkg: error processing package oracle-java6-installer (--configure):
subprocess installed post-installation script returned error exit status 1
Errors were encountered while processing:
oracle-java6-installer
E: Sub-process /usr/bin/dpkg returned an error code (1)

請問oracle-java6-installer 無法安裝..該怎麼解決??
作者: ==    时间: 2017-12-1 12:12

作者: bais    时间: 2018-5-21 16:39
abcxyztt 发表于 2016-9-19 10:03
linux Ubuntu已经跑起来了,一切正常

请问kernel下载的时候,是下载到boot分区吗? 分区的首地址是多少? 谢谢
作者: bais    时间: 2018-6-5 15:29
abcxyztt 发表于 2018-5-29 08:10
看你的parameter啊

嗯,谢谢。
再请教一个问题啊,我编译出来的boot.img下载进去后,在进kernel 之前就会报错,sha mismatch。感觉像是校验出错。
你用Ubuntu是哪个版本的啊,可以分享一下链接么?
我的是firefly-rk3288_ubuntu14.04_201803201135
作者: 风一样的男子    时间: 2018-6-12 17:56
谁遇到过下面的问题? 烧录系统之后,正常启动,出现下面的额错误:
Begin: Running /scripts/local-premount ... FATAL: Could not load /lib/modules/3.10.0/modules.dep: No such file or directory
done.
FATAL: Could not load /lib/modules/3.10.0/modules.dep: No such file or directory
mount: mounting /dev/mmcblk0p3 on /root failed: Invalid argument
Begin: Running /scripts/local-bottom ... done.
done.
Begin: Running /scripts/init-bottom ... mount: mounting /dev on /root/dev failed: No such file or directory
done.
mount: mounting /sys on /root/sys failed: No such file or directory
mount: mounting /proc on /root/proc failed: No such file or directory
Target filesystem doesn't have requested /sbin/init.
No init found. Try passing init= bootarg.
FATAL: Could not load /lib/modules/3.10.0/modules.dep: No such file or directory
FATAL: Could not load /lib/modules/3.10.0/modules.dep: No such file or directory
/bin/sh: can't access tty; job control turned off
(initramfs) \
>
(initramfs)
(initramfs)
(initramfs)
作者: shmily    时间: 2018-7-12 13:56
风一样的男子 发表于 2018-6-12 17:56
谁遇到过下面的问题? 烧录系统之后,正常启动,出现下面的额错误:
Begin: Running /scripts/local-premo ...

我也出现相同的问题,你的解决了吗
作者: 13880383181    时间: 2018-7-14 14:38
rocksing 发表于 2017-1-2 21:41
make -j4 zImage 成功。
接下来make firefly-rk3288.dtb失败,请问什么原因

请问这个问题解决了吗,我先现在也是遇见和你一样的问题了。
作者: 13880383181    时间: 2018-7-14 14:39
rocksing 发表于 2017-1-2 21:41
make -j4 zImage 成功。
接下来make firefly-rk3288.dtb失败,请问什么原因

请问这个问题解决了吗,我先现在也是遇见和你一样的问题了。
作者: 13880383181    时间: 2018-7-14 14:39
rocksing 发表于 2017-1-2 21:41
make -j4 zImage 成功。
接下来make firefly-rk3288.dtb失败,请问什么原因

请问这个问题解决了吗,我先现在也是遇见和你一样的问题了。
作者: 虎子    时间: 2018-8-7 15:20
readsa 发表于 2016-9-20 16:44
为啥我编译完zImage,没有出现zImage is ready的提示,直接就结束了啊?如上图。

并且arch/arm/boot ...

问题解决了吗??
我试了好几次,还是同样的问题
作者: 虎子    时间: 2018-8-7 15:20
readsa 发表于 2016-9-20 16:44
为啥我编译完zImage,没有出现zImage is ready的提示,直接就结束了啊?如上图。

并且arch/arm/boot ...

问题解决了吗??
我试了好几次,还是同样的问题
作者: 虎子    时间: 2018-8-7 15:21
readsa 发表于 2016-9-20 16:44
为啥我编译完zImage,没有出现zImage is ready的提示,直接就结束了啊?如上图。

并且arch/arm/boot ...

问题解决了吗??
我试了好几次,还是同样的问题
作者: 虎子    时间: 2018-8-7 16:38
talugirl 发表于 2016-11-22 10:15
用了最新版的,但还是没有编译出zImage。firefly-3.14-kernel-8fc3d070b5765b55dbb93067d1ef7f7fba04dbd5。 ...

和你一样,遇到同样的问题
问题解决了吗??
作者: sdu_wangbin    时间: 2018-8-8 10:59
我也遇到了./mkkrnlimg -a zImage-dtb kernel.img的问题:

mkkrnlimg V20120220
cmd:-a zImage-dtb [kernel.img]
Makimg kernel Image: zImage-dtb for MID!
input open NG !

但是直接 make -j8 firefly-rk3288.img是OK的,可以正常编译出kernel.img,我猜想是不是环境变量方面的问题呢?(小白的想法,请指正)

作者: wangxf    时间: 2018-10-29 19:53
求教大牛,執行$make INSTALL_MOD_PATH=./modules_install modules_install後失敗
Makefile:634: Cannot use CONFIG_CC_STACKPROTECTOR_STRONG: -fstack-protector-strong not supported by compiler
  CHK     include/config/kernel.release
cp: 无法获取'/home/dadiaoge/UbuntuDev/firefly-3.14-kernel/modules.builtin' 的文件状态(stat): 没有那个文件或目录





欢迎光临 Firefly开源社区 (https://dev.t-firefly.com/) Powered by Discuz! X3.1