本帖最后由 engcrazy 于 2019-10-30 11:28 编辑
在9g25(arm926ej-s核心,armv5tej架构指令集)平台上移植linux4.19内核,引入了设备树,各个自带的外设均通过dts配置获得/dev/xxx,取消了arrch目录下的mach-at91相关驱动代码。新版本内核要求编译器的版本不低于6.0,否则无法编译通过,at91官网上推荐使用linaro gcc 7.4版本的编译器,现阶段在使用linux4sam6.1开发包和buildroot-at91开发系统上遇到以下几个问题,希望官方能够解答一下,不胜感激:
问题1:
在老版本内核linux2.6版本上,内核中包括有at91相关的一些驱动文件,如gpio_set_value、at91_sys_write(设置外设时钟的接口)等相关可以直接调用的接口,新linux4.19内核取消了相关接口。
请问现阶段像GPIO和外设时钟的操作是哪些接口?因外部驱动需要调用这样的一些接口去简单的设计用户驱动。
问题2:
1、在使用linaro gcc 7.4.1编译内核的过程中,生成的镜像文件vmliux通过readelf vmlinux -A查看是armv5te的,且能够正常在9g25上跑起来。
2、buildroot在使用外部编译器linaro gcc 7.4.1编译busybox-1.30.1,生成的镜像文件busybox通过readels busybox -A查看是armv7的,内核引导文件系统出现kernel panic 错误码有00000004 、00000009 、0000000B,通过多次搜索资料各种方法均不能解决,最后看到一篇帖子介绍说是指令集不支持的原因,
于是在编译busybox的时候修改busybox的makefilewe文件,加入了相关选项-mcpu=arm926ej-s -mtue=arm926ej-s -macrh=armv5tej,但是编译出来的busybox镜像文件还是v7格式,也就是该选项并未生效;
于是改用buildroot自己制作的交叉编译器编译的busybox,其格式为v5te,符合预期。且文件系统能够正常挂载启动成功。
请问内核在使用外部编译器编译的镜像文件为armv5te,而编译busybox如何才能生成v5te格式的文件?经过多次试验均失败。
问题3:
能否提供新版内核各外设驱动设计的例程、各外设驱动设计应用开发例程,就如同Linux小课堂介绍的How_to_use_MCHP_Linux_on_UART等全面的一些总结文档和设计例程,同时,关于用户自定义驱动程序如何在dts中加入和driver文件的模板设计。跟上设备树驱动的潮流。
在此静候ATMEL官方的支持与解答,不胜感激!
|