首页问答详情

全志longan平台如何使用自定义内核版本的设备树?

   
code_digger
code_digger  发布于  2022-05-29 15:27:52
采纳率 0%
2个问答

我在longan平台下更换了高版本的linux内核(原平台linux版本为4.9),但编译系统的脚本还是保持longan平台的,dts也在内核script/build.sh中添加了,编译出现了设备树编译不过的现象,片段如下:

  • ‘[‘ -f /home/z/work/H3_Dev/longan/kernel/linux-5.8/arch/arm/boot/dts/.sun8iw7p1-p1.dtb.d.dtc.tmp ‘]’
  • ‘[‘ -f /home/z/work/H3_Dev/longan/kernel/linux-5.8/arch/arm/boot/dts/.sun8iw7p1-.dtb.d.dtc.tmp ‘]’
  • printf ‘Script_to_dts: use common dts file sun8iw7p1-soc.dts\n’
    Script_to_dts: use common dts file sun8iw7p1-soc.dts
  • DTC_DEP_FILE=/home/z/work/H3_Dev/longan/kernel/linux-5.8/arch/arm/boot/dts/.sun8iw7p1-soc.dtb.d.dtc.tmp
  • DTC_SRC_FILE=/home/z/work/H3_Dev/longan/kernel/linux-5.8/arch/arm/boot/dts/.sun8iw7p1-soc.dtb.dts.tmp
  • local ‘DTC_FLAGS=-W no-unit_address_vs_reg’
  • ‘[‘ -d /home/z/work/H3_Dev/longan/device/config/chips/h3/dtbo ‘]’
  • echo ‘sunxi_dtb create’
    sunxi_dtb create
  • /home/z/work/H3_Dev/longan/kernel/linux-5.8/scripts/dtc/dtc -W no-unit_address_vs_reg -O dtb -o /home/z/work/H3_Dev/longan/kernel/linux-5.8/output/sunxi.dtb -b 0 -i /home/z/work/H3_Dev/longan/kernel/linux-5.8/arch/arm/boot/dts -d /home/z/work/H3_Dev/longan/kernel/linux-5.8/arch/arm/boot/dts/.sun8iw7p1-soc.dtb.d.dtc.tmp /home/z/work/H3_Dev/longan/kernel/linux-5.8/arch/arm/boot/dts/.sun8iw7p1-soc.dtb.dts.tmp
    FATAL ERROR: Couldn’t open “/home/z/work/H3_Dev/longan/kernel/linux-5.8/arch/arm/boot/dts/.sun8iw7p1-soc.dtb.dts.tmp”: No such file or directory
  • ‘[‘ 1 -ne 0 ‘]’
  • echo ‘Conver script to dts failed’
    Conver script to dts failed
  • exit 1
    ERROR: build kernel Failed
    INFO: mkkernel failed

由于没有.sun8iw7p1-soc.dtb.dts.tmp这个中间文件,编译脚本使用了默认的dts,且编译出错,不知道.sun8iw7p1-soc.dtb.dts.tmp这个中间文件如何生成的,有大佬了解这个?可否告知一下,谢谢!
编译dts对应的脚本函数附加如下:
do_init_to_dts()
{
local DTC_SRC_PATH=${LICHEE_KERN_DIR}/arch/${ARCH}/boot/dts
if [ “x${ARCH}” == “xarm64” ]; then
DTC_SRC_PATH=${DTC_SRC_PATH}/sunxi
fi
local DTC_DEP_BOARD=${DTC_SRC_PATH}/.${LICHEE_CHIP}-${LICHEE_BOARD}.dtb.d.dtc.tmp
local DTC_DST_FILE=${DTC_SRC_PATH}/sun8i-h3-orangepi-pc.dtb
local DTC_SRC_BOARD=${DTC_SRC_PATH}/.${LICHEE_CHIP}-${LICHEE_BOARD}.dtb.dts.tmp
local DTC_DEP_BUSSINESS=${DTC_SRC_PATH}/.${LICHEE_CHIP}-${LICHEE_BUSSINESS}.dtb.d.dtc.tmp
local DTC_SRC_BUSSINESS=${DTC_SRC_PATH}/.${LICHEE_CHIP}-${LICHEE_BUSSINESS}.dtb.dts.tmp
local DTC_DEP_COMMON=${DTC_SRC_PATH}/.${LICHEE_CHIP}-soc.dtb.d.dtc.tmp
local DTC_SRC_COMMON=${DTC_SRC_PATH}/.${LICHEE_CHIP}-soc.dtb.dts.tmp

  1. local DTC_COMPILER=${LICHEE_KERN_DIR}/scripts/dtc/dtc
  2. local DTC_INI_FILE_BASE=${LICHEE_BOARD_CONFIG_DIR}/sys_config.fex
  3. local DTC_INI_FILE=output/sys_config_fix.fex
  4. cp $DTC_INI_FILE_BASE $DTC_INI_FILE
  5. sed -i "s/\(\[dram\)_para\(\]\)/\1\2/g" $DTC_INI_FILE
  6. sed -i "s/\(\[nand[0-9]\)_para\(\]\)/\1\2/g" $DTC_INI_FILE
  7. echo $DTC_INI_FILE
  8. if [ ! -f $DTC_COMPILER ]; then
  9. echo "Script_to_dts: Can not find dtc compiler.\n"
  10. exit 1
  11. fi
  12. if [ -f $DTC_DEP_BOARD ]; then
  13. printf "Script_to_dts: use board special dts file ${LICHEE_CHIP}-${LICHEE_BOARD}.dts\n"
  14. DTC_DEP_FILE=${DTC_DEP_BOARD}
  15. DTC_SRC_FILE=${DTC_SRC_BOARD}
  16. elif [ -f $DTC_DEP_BUSSINESS ]; then
  17. printf "Script_to_dts: use bussiness special dts file ${LICHEE_CHIP}-${LICHEE_BUSSINESS}.dts\n"
  18. DTC_DEP_FILE=${DTC_DEP_BUSSINESS}
  19. DTC_SRC_FILE=${DTC_SRC_BUSSINESS}
  20. else
  21. printf "Script_to_dts: use common dts file ${LICHEE_CHIP}-soc.dts\n"
  22. DTC_DEP_FILE=${DTC_DEP_COMMON}
  23. DTC_SRC_FILE=${DTC_SRC_COMMON}
  24. fi
  25. local DTC_FLAGS="-W no-unit_address_vs_reg"
  26. if [ -d ${LICHEE_CHIP_CONFIG_DIR}/dtbo ]; then
  27. echo "sunxi_dtb create"
  28. $DTC_COMPILER ${DTC_FLAGS} -@ -O dtb -o ${LICHEE_KERN_DIR}/output/sunxi.dtb \
  29. -b 0 \
  30. -i $DTC_SRC_PATH \
  31. -d $DTC_DEP_FILE $DTC_SRC_FILE
  32. else
  33. echo "sunxi_dtb create"
  34. $DTC_COMPILER ${DTC_FLAGS} -O dtb -o ${LICHEE_KERN_DIR}/output/sunxi.dtb \
  35. -b 0 \
  36. -i $DTC_SRC_PATH \
  37. -d $DTC_DEP_FILE $DTC_SRC_FILE
  38. fi
  39. if [ $? -ne 0 ]; then
  40. echo "Conver script to dts failed"
  41. exit 1
  42. fi
  43. #restore the orignal dtsi
  44. if [ "x${LICHEE_LINUX_DEV}" = "xdragonboard" \
  45. -o "x${LICHEE_LINUX_DEV}" = "xdragonmat" ]; then
  46. local DTS_PATH=${LICHEE_KERN_DIR}/arch/${ARCH}/boot/dts
  47. [ "x${ARCH}" = "xarm64" ] && DTS_PATH=${LICHEE_KERN_DIR}/arch/${ARCH}/boot/dts/sunxi
  48. if [ -f ${DTS_PATH}/${LICHEE_CHIP}_bak.dtsi ];then
  49. rm -f ${DTS_PATH}/${LICHEE_CHIP}.dtsi
  50. mv ${DTS_PATH}/${LICHEE_CHIP}_bak.dtsi ${DTS_PATH}/${LICHEE_CHIP}.dtsi
  51. fi
  52. fi
  53. printf "Conver script to dts ok.\n"
  54. # It'is used for debug dtb
  55. $DTC_COMPILER ${DTC_FLAGS} -I dtb -O dts -o ${LICHEE_KERN_DIR}/output/.sunxi.dts ${LICHEE_KERN_DIR}/output/sunxi.dtb
  56. return

}

我来回答
1818
0
0
回答
1个
易百纳技术社区
1_bit 发布于2022-12-27 15:47:33
CSDN/51专家/导师/评委 博客之星TOP5 蓝桥/INFO签约作者

多谢分享

0

Markdown 语法

  • 加粗 **内容**
  • 斜体 *内容*
  • 删除线 ~~内容~~
  • 引用 > 引用内容
  • 代码 `代码`
  • 代码块 ```编程语言↵代码```
  • 链接 [链接标题](url)
  • 无序列表 - 内容
  • 有序列表 1. 内容
  • 缩进 内容
  • 图片 ![alt](url)

Markdown 语法

  • 加粗 **内容**
  • 斜体 *内容*
  • 删除线 ~~内容~~
  • 引用 > 引用内容
  • 代码 `代码`
  • 代码块 ```编程语言↵代码```
  • 链接 [链接标题](url)
  • 无序列表 - 内容
  • 有序列表 1. 内容
  • 缩进 内容
  • 图片 ![alt](url)
+ 添加网盘链接/附件
或将文件直接拖到这里
悬赏:
EBC
网盘
* 网盘链接:
* 提取码:
悬赏:
EBC
Loading...
易百纳技术社区
确定要删除此文章、专栏、评论吗?
确定
取消
易百纳技术社区
易百纳技术社区
在专栏模块发布专栏,可获得其他E友的打赏
易百纳技术社区
回答悬赏问答,被题主采纳后即可获得悬赏金
易百纳技术社区
在上传资料时,有价值的资料可设置为付费资源
易百纳技术社区
达到一定金额,收益即可提现~
收益也可用来充值ebc,下载资料、兑换礼品更容易
易百纳技术社区
活动规则
  • 1.周任务为周期性任务,每周周一00:00刷新,上周完成的任务不会累计到本周,本周需要从头开始任务,当前任务完成后才可以完成下一个任务
  • 2.发布的专栏与资料需要与平台的板块有相关性,禁止注水,专栏/资料任务以审核通过的篇数为准
  • 3.任务完成后,现金奖励直接打款到微信账户;EBC/收益将自动发放到个人账户,可前往“我的钱包”查看;其他奖励请联系客服兑换
  • 4.每周最后三个任务将会有以下奖品掉落:社区热卖开发板、小米音响、视频年度会员、京东卡、华为手机等等
易百纳技术社区
升级提醒
易百纳技术社区

恭喜您由入门

社区送出礼品一份

请填写您的收件地址,礼品将在3个工作日寄出

易百纳技术社区