zuoyeday8

1.tftp服务器 安装
1.安装tftp服务TFTP器安装包 sudo install tftpd-hpa tftp-hpa
2.配置tftp服务器tftpd-hpa具体参数: tftp_username、tftp_directory、tftp_address、tftp_options
3.重启配置文件 source   tftpd-hpa
4.重启tftp服务器 service tftpd-hpa restart

nfs服务器
1.安装nfs服务器 sudo apt-get install nfs-kernel-server
2.将rootfs-ok.tar.xz文件(根文件压缩包)拷贝到ubuntu中
3.配置nfs服务器 export具体参数添加路径、权限、是否同步信息、是否检查子目录信息,开发板权限
4.重启nfs服务器 sudo service nfs-kernel-server restart

1.准备阶段源码在st官网下载uboot源码、tf-a(安全版本移植)和linux_kernel(linux内核源码)
2.将u-boot放到虚拟机里
3.解压u-boot压缩包
4.打开文件夹,解析README
   找到For all supported boards there are ready-to-use default
         configurations available; just type "make <board_name>_defconfig"
         Example: For a TQM823L module type:
               cd u-boot
               make TQM823L_defconfig
         说明_对于板子的配置是 make <board_name>defconfig,如果板子是TQM823L那么board_name就是TQM823L
         我们的板子使用的是FSMPA平台所以board_name是fsmp1a
     查找fsmp1a配置地址方法
    1》执行make fsmp1a_defconfig发现可以找到相关配置所在地址:arch/../configs/
         进入configs找到stm32mp15* 
         stm32mp15_basic_defconfig非安全版本默认配置
         stm32mp15_trusted_defconfig安全版本默认配置

    2》要在工程管理文件 Makefile查找make fsmp1a_defconfig 相关配置 
        fsmp1a_defconfig相关配置查找不到(说明是运用通配符来通配board_name)就退而求其次,查找defconfig
         找不到defconfig,再次查找config
         找到%config:相关配置
         运用echo分别打印各个部分内容所代表的意思如 @echo $(Q)
         然后再次执行make fsmp1a_defconfig
         获得相关配置所在地址make -f ./scripts/Makefile.build obj=scripts/kconfig fsmp1a_defconfig
         说明在该路径下再次执行make fsmp1a_defconfig
         进入uboot目录下scripts/kconfig目录下,打开Makefile文件搜索defconfig
         找到%_defconfig:相关配置
         将$(Q)删除($(Q)是@不写就是将回显打开)        
        回到根目录启动make fsmp1a_defconfig
         获得  scripts/kconfig/conf  --defconfig=arch/../configs/fsmp1a_defconfig Kconfig
           conf是可执行文件,目标(fsmp1a_defconfig)和Kconfig作为参数传递给conf,最终生成配置文件
          conf: elf可执行文件 
          --defconfig=arch/../configs/fsmp1a:最终目标
          Kconfig:板子默认的配置
非安全版本移植
移植步骤:
 1.执行make disclean/清除命令
 2.打开uboot目录下的Makefile
   1》搜索CROSS_COMPILE(是makefile配置的公认的标准其他的还有CC=gcc之类的标准):交叉编译工具链将uboot镜像文  件编译生成arm架构
   2》修改为ifeq (arm,arm)   CROSS_COMPILE ?= arm-linux-gnueabihf-
 3.配置非安全版本默认配置文件命令:make stm32mp15_basic_defconfig
  
  4.进入设备树文件目录将公板的相关配置复制为FSMP1A相关配置,并修改fsmp1a的设备树源文件
        cp stm32mp157a-dk1.dts stm32mp157a-fsmp1a.dts 复制公板设备树源文件为fsmp1a
        cp stm32mp157a-dk1-u-boot.dtsi  stm32mp157a-fsmp1a-u-boot.dtsi 复制公板设备树u-boot头文件为fsmp1a
        cp stm32mp15xx-dkx.dtsi stm32mp15xx-fsmp1x.dtsi复制公板设备树头文件为fsmp1a
      将公板的源文件stm32mp157a-fsmp1a.dts将 #include "stm32mp15xx-dkx.dtsi" 修改为 #include "stm32mp15xx-   fsmp1x.dtsi并修改model和comptible的值

 6.进入当前Makefile中添加FSMP1A平台的配置
     搜索CONFIG_STM32MP15x找到dtb-$(CONFIG_STM32MP15x)添加stm32mp157a-fsmp1a.dtb

     7.安装库文件  sudo apt-get install libncurses5-dev  回到根目录 进入图形化界面 make menuconfig
     电源配置关闭,修改内存管理的值DEVICE_TREE
    将adc电流去掉 (dk1不足3A便会启动失败,fsmp1a没有这种设置)
    打开PHY(移植网卡)
     8.备份.config

  9.回到uboot源目录用time make -j4 all编译

     获得
           一级引导程序:u-boot-spi.stm32
           二级引导程序:u-boot.img
    10.将uboot镜像文件烧写到TF卡中 烧写两次一级引导程序(更新时保证一个有效的分区),一次二级引导程序
   11.修改板子的启动模式为TF卡启动方式
   12对非安全版本进行备份
       由根目录下的Makefile的config得知 stm32mp15_basic_defconfig是非安全配置
        
        执行了make stm32mp15_basic_defconfig会将.config重置,所以要备份执行cp .config configs/stm32mp15_fsmp1a_basic_defconfig
d
        重新使用make menuconfig,将电源关闭,修改内存管理值DEVICE_TREE,去掉adc访问模数转换信息,去掉adc启动电流程序,添   加支持PHY(网卡设备)
  

TF-A的移植
1.获取源码(将tf-a-stm32mp-2.2.r2-r0.tar.xz)并解压
2.分析README文档、
   得知
     1——》准备工作(解压tf-a源码,打补丁,编译tf-a源码,生成tf-a镜像文件路径和名字)
     2——》配置交叉工具链(配置makefile.sdk(更改CROSS_COMPILE的值为交叉编译链,TFA_DEVICETREE(添加平台编译)的值,TF_A_ENABLE_DEBUG_WRAPPER(将使能调试改为0),)
     3——》准备tf-a源码
     4——》管理tf-a源码(到fdts目录下,复制dk1公板的设备树信息为fsmp1a平台相关设备树,修改设备树源文件(stm32mp157a-fsmp1a.dts),修改设备树头文件(stm32mp15xx-fsmp1x.dtsi(删除i2c4,删除cpu0和cpu1,添加FSMP1A节点,添加EMMC节点(&sdmmc))))
     5——》编译tf-a源码(执行Makedfile.sdk)
     6——》烧写tf-a镜像文件  (启用uboot下面的sdtool脚本(sh sdtools.sh /dev/sdb))

内核移植步骤
1.连接外网(下载)
2.解压linux内核源码,修改Makefile中的CROSS_COMPILE为ARM架构,添加stm32mp157a-fsmp1a的镜像文件
3.打补丁
4.复制公板设备树信息为FSMP1A平台相关设备树
5.打开stm32mp157a-fsmp1a.dts 文件修改设备树头文件,为stm32mp15xx-dkx.dtsi,model和compatible
6.在根目录执行make menuconfig修改MAXIO PHYS的状态为*,添加热插拔地址为(/sbin/hotplug)
7.到linux内核源码目录下,编译linux内核源码 time make -j4 uImage vmlinux dtbs LOADADDR=0xc2000000,获得stm32mp157a-fsmp1a的镜像文件和uImage的镜像文件

添加图形化界面*
1.在驱动的char目录下打开Kconfig(图形化信息的文件)/drivers/char
2.打开Kconfig文件添加需要的子项(config菜单项内容,选项切换(trisate三态选项,bool两态项,depends on 依赖选项,help 帮助信息 default y——》默认选项被编译 default n——》默认选项不被编译 default m——》默认选项采用模块化编译)如果要进行模块化编译就使用trisate并将default 为 m)
3.添加Makefile文件内容(obj-$(CONFIG_LED_DRIVER) += 二进制文件.o)
4.打开make menuconfig观察该选项有无生成,并修改成所需的值(模块化就是m)
5.内核源码编译 time make -j4 uImage vmlinux dtbs LOADADDR=0xc2000000或模块化编译 time  make -j4 modules

  • 33
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值