code_digger

code_digger

0个粉丝

2

问答

0

专栏

0

资料

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

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

   

我在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

}

我来回答
回答1个
时间排序
认可量排序

1_bit

5个粉丝

0

问答

26

专栏

136

资料

1_bit 2022-12-27 15:47:33
认可0

多谢分享

或将文件直接拖到这里
悬赏:
E币
网盘
* 网盘链接:
* 提取码:
悬赏:
E币

Markdown 语法

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

Markdown 语法

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

举报类型

  • 内容涉黄/赌/毒
  • 内容侵权/抄袭
  • 政治相关
  • 涉嫌广告
  • 侮辱谩骂
  • 其他

详细说明

易百纳技术社区