社区导航

 

搜索
查看: 571|回复: 2

[原创] STM32MP157A-DK1测评+内核编译与SD卡烧写(4)

[复制链接]

1219

TA的帖子

2

TA的资源

纯净的硅(高级)

Rank: 6Rank: 6

发表于 2020-3-28 19:21 | 显示全部楼层 |阅读模式

原计划调试SPI设备,由于遇到了困难多方查找资料也没有找到解决的办法,只能暂时搁置下来。看来只有自己想办法了。如果自己编写SPI设备的驱动,就需要重新编译内核代码,制作自己的image了。经过艰苦的努力终于用了一点发现。这其中最痛苦的是st的wiki网站实在是慢!!大把的时间都是在等待网站的回应。
准备编译环境
编译的必要条件是安装SDK,安装过程前面有叙述,主要是注意一定的检查环境变量。注意我用的是ubuntu 16.04,有个叫bc的工具据说是统计字符的,这个版本中默认是没有安装的。
apt install bc
安装成功后在进行下面的步骤。
下载安装源码包
en.SOURCES-kernel-stm32mp1-openstlinux-20-02-19.tar.xz
参考资料和README.HOW_TO.txt
1、安装内核源码。

$ tar xvf en.SOURCES-kernel-stm32mp1-openstlinux-20-02-19.tar.xz
$ cd stm32mp1-openstlinux-20-02-19/sources/arm-ostl-linux-gnueabi/linux-stm32mp-4.19-r0/
$ tar xvf linux-4.19.94.tar.xz
源码安装成功!
2、打补丁
    $> cd linux-4.19.49 
    $> for p in `ls -1 ../*.patch`; do patch -p1 < $p; done
不出错误就完成
3、准备编译
    $> cd linux-4.19.49 
    $> mkdir -p ../build
在源码的目录上层建立build目录用来编译
    $> make ARCH=arm O="$PWD/../build" multi_v7_defconfig fragment*.config

    $> for f in `ls -1 ../fragment*.config`; do scripts/kconfig/merge_config.sh -m -r -O $PWD/../build $PWD/../build/.config $f; done

    $> yes '' | make ARCH=arm oldconfig O="$PWD/../build"

以上操作在linux-4.19.49 目录完成,检查build目录,应该有makefile等文件

    $> cd build

    $> make ARCH=arm uImage vmlinux dtbs LOADADDR=0xC2000040

    $> make ARCH=arm modules
编译模块和驱动,注意时间较长。

4、开始编译
   进入源码目录 
    $> cd <directory to kernel source code>
    * Build kernel images (uImage and vmlinux) and device tree (dtbs)
    $> make ARCH=arm uImage vmlinux dtbs LOADADDR=0xC2000040 O="$PWD/../build"
    * Build kernel module
    $> make ARCH=arm modules O="$PWD/../build"
    注意时间较长
5、制作安装固件
    * Generate output build artifacts
    $> make ARCH=arm INSTALL_MOD_PATH="$PWD/../build/install_artifact" modules_install O="$PWD/../build"
    $> mkdir -p $PWD/../build/install_artifact/boot/
    $> cp $PWD/../build/arch/arm/boot/uImage $PWD/../build/install_artifact/boot/
    $> cp $PWD/../build/arch/arm/boot/dts/st*.dtb $PWD/../build/install_artifact/boot/
以上步骤比较顺利完成,在build下发现制作好的内核文件。注意只是内核文件。这次没有更加深入的研究设备驱动的制作。 资料上说是通过修改device tree (dtbs)文件配置来加入驱动的。
6、内核文件的修改。
st公司没有提供GUI类型的linux内核配置的工具,也没有制作各种烧写image的脚本。只是提供了修改内核的方法。
比较靠谱的方法是提供读卡器进行修改内核文件。我没有急着修改SD卡的内容。如果坏了我的板子就“变砖”啦。先介绍不动手。
SDCARD 是linux能够使用的文件系统,内核和驱动都是磁盘文件。只要替换就可以完成更新。
修改内核
  (1)找一个USB读卡器,插入制作好系统的SDCARD。
  (2)mount SD卡
  (3)进入<path to install_artifact dir>/install_artifact 
  (4)拷贝boot目录到SDCARD cp -r boot/* /media/$USER/bootfs/
  (5)卸载SD卡
修改模块
  (1)进入<path to install_artifact dir>/install_artifact 
  (2)删除连接文件 rm lib/modules/<kernel version>/source lib/modules/<kernel version>/build
  (3)制作拷贝列表  find . -name "*.ko" | xargs $STRIP --strip-debug --remove-section=.comment --remove-section=.note --preserve-dates
  (4)拷贝文件到SD卡  cp -r lib/modules/* /media/$USER/rootfs/lib/modules/
  (5)卸载SD卡

修改板子上的依赖
注意这是在板子上操作
    Generate a list of module dependencies (modules.dep) and a list of symbols
    provided by modules (modules.symbols):
    $> ssh root@<ip of board> depmod -a
    Synchronize data on disk with memory
    $> ssh root@<ip of board> sync
    Reboot the board in order to take update into account
    $> ssh root@<ip of board> reboot
7、使用工厂image制作tf卡
首先,下载en.FLASH-stm32mp1-openstlinux-20-02-19.tar.xz软件包。解压到目录下。
制作TF-A卡需要使用工具STM32CubeProgrammer来烧写,本次测试是在windows主机下进行的。安装工具时需要注意,如果先前安装过该软件,需要把DFU驱动先卸载在安装。我没有安装过所以一次就安装好了。
使用一张空白卡制作工作image ,将板子上的sw1的两个都跳线拨到off位置,将TF-A卡插好,将USB-C电缆和ST-link、网线都与PC机相连。然后给板子上电。
上电后,按下板子上的reset按键。打开STM32CubeProgrammer

STprogrammer.jpg

选择连接方式为USB。如果成功可以出现板子的信息。
使用open file文件卡打开stm32mp1-openstlinux-20-02-19\images\stm32mp1\flashlayout_st-image-weston下的tsv文件。选择你需要使用的。
本次使用“FlashLayout_sdcard_stm32mp157a-dk1-basic.tsv”
指定Binaries PATH的路径为image的目录。stm32mp1-openstlinux-20-02-19\images\stm32mp1\
单击download,就开始制作TF-A卡了。
完成后,给板子断电。将板子上的sw1的两个都跳线拨到on位置。
上电,就可以看到启动的界面了。

参考资料
https://wiki.st.com/stm32mpu/wiki/STM32MP1_Developer_Package#Installing_the_Linux_kernel
https://wiki.st.com/stm32mpu/wiki/How_to_build_Linux_kernel_user_space_tools

此内容由EEWORLD论坛网友bigbat原创,如需转载或用于商业用途需征得作者同意并注明出处

此帖出自stm32/stm8论坛

回复

使用道具 举报

2001

TA的帖子

1

TA的资源

五彩晶圆(初级)

Rank: 7Rank: 7Rank: 7

发表于 2020-3-29 21:42 | 显示全部楼层

wiki确实很慢,几个大厂的官网都慢。我这里TI的好点。

人已离开,无事别找,找也找不到。

回复

使用道具 举报

1219

TA的帖子

2

TA的资源

纯净的硅(高级)

Rank: 6Rank: 6

 楼主| 发表于 2020-3-30 07:54 | 显示全部楼层

我没有办法只能用代理上啦,wiki估计是被过滤了吧。真是搞不懂难道我们就无知到什么都相信的地步了吗?


回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

关闭

站长推荐上一条 1/4 下一条

  • 论坛活动 E手掌握

    扫码关注
    EEWORLD 官方微信

  • EE福利  唾手可得

    扫码关注
    EE福利 唾手可得

Archiver|手机版|小黑屋|电子工程世界 ( 京ICP证 060456 )

GMT+8, 2020-6-4 09:56 , Processed in 0.137138 second(s), 24 queries , Gzip On, MemCache On.

快速回复 返回顶部 返回列表