Android系统10 RK3399 init进程启动(十一) 内核编译

 配套系列教学视频链接:

      安卓系列教程之ROM系统开发-百问100ask

说明

系统:Android10.0

设备: FireFly RK3399 (ROC-RK3399-PC-PLUS)

前言

         本章重点介绍在Android 源码包中,内核的的单独编译。


一, 内核目标清除

内核如果编译过, 需要重新重头编译,或者打包给别人, 可以对内核进行清除

cd rk3399_Android10.0/kernel/

make   distclean  或者 make clean

distclean清除更彻底

二, 单独第一次编译内核

对于第一个编译内核, 需要进行内核配置, rk3399会可以做如下操作

cd rk3399_Android10.0/

source FFTools/build.sh

cd kernel/

make ARCH=arm64 firefly_defconfig android-10.config  rk3399.config

make ARCH=arm64 BOOT_IMG=../rockdev/Image-rk3399_roc_pc_plus/boot.img rk3399-roc-pc-plus.img -j6

解释:

执行make ARCH=arm64 firefly_defconfig android-10.config  rk3399.config会显示如下:

arch/arm64/configs/firefly_defconfig

Using .config as base

Merging ./kernel/configs/android-10.config

Merging ./kernel/configs/rk3399.config

merged configuration written to .config (needs make)

configuration written to .config

 说明会将多个congfig文件会进行合并。

执行make ARCH=arm64 BOOT_IMG=../rockdev/Image-rk3399_roc_pc_plus/boot.img rk3399-roc-pc-plus.img -j6 的意思是

会编译rk3399-roc-pc-plus.dts, 并且会将最终的目标文件更新生成到../rockdev/Image-rk3399_roc_pc_plus/boot.img

三, 修改内核源码再编译

如果已经做过第一次内核配置和编译,后面需要在此基础上进行修改和编译, 可以通过如下操作:

cd rk3399_Android10.0/

source FFTools/build.sh

cd kernel/

make ARCH=arm64 menuconfig 

或者修改源码,dts等, 如修改支持sd/tf启动:

vim  arch/arm64/boot/dts/rockchip/rk3399-roc-pc-plus.dts  +88 打开注释
&sdmmc{
    supports-emmc; //for sd boot
};
vim arch/arm64/boot/dts/rockchip/rk3399-roc-pc-plus.dtsi +266 添加
&vcc_sd{
    regulator-always-on;
    regulator-boot-on;
    regulator-min-microvolt = <3300000>;
    regulator-max-microvolt = <3300000>;
};

重新编译内核:

make ARCH=arm64 BOOT_IMG=../rockdev/Image-rk3399_roc_pc_plus/boot.img rk3399-roc-pc-plus.img -j24  

 最后编译生成日志为:

CC      drivers/gpu/arm/bifrost/bifrost_kbase.mod.o

  CC      drivers/gpu/arm/midgard/midgard_kbase.mod.o

  CC      drivers/media/usb/gspca/gspca_main.mod.o

  CC      drivers/mtd/devices/m25p80.mod.o

  CC      drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd/bcmdhd.mod.o

  CC      drivers/net/wireless/rockchip_wlan/rtl8723ds/8723ds.mod.o

  CC      drivers/net/wireless/rockchip_wlan/rtl8723cs/8723cs.mod.o

  CC      drivers/net/wireless/rockchip_wlan/rtl8723du/8723du.mod.o

  CC      drivers/net/wireless/rockchip_wlan/rtl8822bs/8822bs.mod.o

  LD [M]  drivers/gpu/arm/bifrost/bifrost_kbase.ko

  LD [M]  drivers/net/wireless/rockchip_wlan/rtl8723du/8723du.ko

  LD [M]  drivers/media/usb/gspca/gspca_main.ko

  LD [M]  drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd/bcmdhd.ko

  LD [M]  drivers/net/wireless/rockchip_wlan/rtl8822bs/8822bs.ko

  LD [M]  drivers/gpu/arm/midgard/midgard_kbase.ko

  LD [M]  drivers/mtd/devices/m25p80.ko

  LD [M]  drivers/net/wireless/rockchip_wlan/rtl8723cs/8723cs.ko

  LD [M]  drivers/net/wireless/rockchip_wlan/rtl8723ds/8723ds.ko

  Image:  resource.img (with rk3399-roc-pc-plus.dtb logo.bmp logo_kernel.bmp) is ready

  Image:  boot.img (../rockdev/Image-rk3399_roc_pc_plus/boot.img + Image + resource.img) is ready

  Image:  zboot.img (../rockdev/Image-rk3399_roc_pc_plus/boot.img + Image.lz4 + resource.img) is ready

四, 生成镜像介绍

在当前目录下会出现boot.img  resource.img, 以上红色部分是在kernel/scripts/mkimg中打印出来的

file boot.img

boot.img: Android bootimg, kernel (0x10008000), second stage (0x10f00000), page size: 2048

 将boo.img解压出来, unpack_bootimg --boot_img boot.img --out boot-out,.得到如下内容:

其实boot.img的生成是由如下命令完成的:

./scripts/mkbootimg --kernel ./arch/arm64/boot/Image --second resource.img -o boot.img

最后通过验证,其实boot.img中的second就是resource.img。

 解压resource.img:

kernel/mytest$ ../scripts/resource_tool --unpack --image=resource.img 

 在当前目录下出现out目录:

 所以rk3399下boot.img内部结构如下:

+—————–+

| boot header | 1 page

+—————–+

| kernel | n pages

+—————–+

| ramdisk | m pages

+—————–+

| second stage | o pages <====() logo.bmp  logo_kernel.bmp rk-kernel.dtb

+—————–+

五, 内核烧录

将kernel目录下的boot.img从编译机器中拷贝到window中来:

在开发板上电之前, 按住reovery键, type-c线链接好, 上电, 进入到下载模式:

 选好boot.img路径, 然后执行boot.img,即可完成烧录更新内核。

六,总结

通过编译内核, 大体上知道内核源码最终生成的是boot.img, 可以打包生成到统一镜像中去, 也可以单独编译和调试。

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
Firefly-RK3399Android10中的pdf_20211123_1657.7z a4_portrait_rgbb.pdf a5_portrait_rgbb.pdf a5_portrait_rgbb_1_6_printscaling_default.pdf a5_portrait_rgbb_1_6_printscaling_none.pdf aacDecoder.pdf aacEncoder.pdf about_blank.pdf Android_malloc_debug.pdf annotation_highlight_long_content.pdf annotation_highlight_rollover_ap.pdf annotation_highlight_square_with_ap.pdf annotation_ink_multiple.pdf annotation_stamp_with_ap.pdf annotiter.pdf barcode_test.pdf BHUSA2014-capstone.pdf black.pdf bookmarks.pdf bookmarks_circular.pdf brotli-comparison-study-2015-09-22.pdf bug_113.pdf bug_213.pdf bug_216.pdf bug_298.pdf bug_325_a.pdf bug_325_b.pdf bug_343.pdf bug_344.pdf bug_355.pdf bug_360.pdf bug_451265.pdf bug_451830.pdf bug_452455.pdf bug_454695.pdf bug_455199.pdf bug_459580.pdf bug_481363.pdf bug_487928.pdf bug_507316.pdf bug_544880.pdf bug_547706.pdf bug_551248.pdf bug_551460.pdf bug_552046.pdf bug_554151.pdf bug_555784.pdf bug_557223.pdf bug_57.pdf bug_572871.pdf bug_583.pdf bug_601362.pdf bug_602650.pdf bug_603518.pdf bug_620428.pdf bug_631912.pdf bug_634394.pdf bug_634716.pdf bug_644.pdf bug_650.pdf bug_664284.pdf bug_679649.pdf bug_680376.pdf bug_707673.pdf bug_709793.pdf bug_713197.pdf bug_717.pdf bug_750568.pdf bug_757705.pdf bug_765384.pdf bug_779.pdf bug_781804.pdf bug_782596.pdf bug_921.pdf bug_xrefv4_loop.pdf CameraITS.pdf camera_engine_rkisp_user_manual_v2.2.pdf camera_hal3_user_manual_v2.3.pdf checkerboard.pdf circular_viewer_ref.pdf combobox_form.pdf control_characters.pdf default-values-ip.pdf DngNoiseModel.pdf Drm_Vendor_Modules_v1.pdf dynamic_list_box_allow_multiple_selection.pdf dynamic_password_field_background_fill.pdf dynamic_table_color_and_width.pdf EASLibrary3_5.pdf EAS_API_Reference.pdf EAS_Library_Integration_Guide.pdf Efuse process explain .pdf email_recommended.pdf embedded_attachments.pdf embedded_images.pdf encrypted.pdf feature_linearized_loading.pdf fieldsmanagement.pdf first.pdf hello_world.pdf ic_brightness_medium_24dp.pdf ic_radio_button_check

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

旗浩QH

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值