当前位置: 首页 > news >正文

网站制作公司宁波哪家好深圳制作手机网站

网站制作公司宁波哪家好,深圳制作手机网站,wordpress酒店主题,seo快速排名是什么文章目录 目的:为什么编译驱动程序之前要先编译内核?编译内核编译设备树编译安装内核模块编译内核模块安装内核模块到 Ubuntu 的NFS目录下备用 安装内核和模块到开发板上编译 led 驱动在开发板安装驱动模块下载驱动程序安装驱动模块 目的: 在…

文章目录

  • 目的:
  • 为什么编译驱动程序之前要先编译内核?
  • 编译内核
  • 编译设备树
  • 编译安装内核模块
    • 编译内核模块
    • 安装内核模块到 Ubuntu 的NFS目录下备用
  • 安装内核和模块到开发板上
  • 编译 led 驱动
  • 在开发板安装驱动模块
    • 下载驱动程序
    • 安装驱动模块

目的:

  • 在ubuntu环境下编译开发板的某个驱动,并挂载在开发板上运行

为什么编译驱动程序之前要先编译内核?

  • 驱动程序要用到内核文件:
    比如驱动程序中这样包含头文件:#include <asm/io.h>,其中的 asm 是一个链接文件,指向 asm-arm 或 asm-mips,这需要先配置、编译内核才会生成 asm 这个链接文件。【内核、设备树、驱动】
  • 编译驱动时用的内核、开发板上运行到内核,要一致:开发板上运行到内核是出厂时烧录的,你编译驱动时用的内核是你自己编译的,这两个内核不一致时会导致一些问题。所以我们编译驱动程序前,要把自己编译出来到内核放到板子上去,替代原来的内核。
  • 更换板子上的内核后,板子上的其他驱动也要更换:板子使用新编译出来的内核时,板子上原来的其他驱动也要更换为新编译出来的。所以在编译我们自己的第 1 个驱动程序之前,要先编译内核、安装内核模块、设备树,并且放到板子上去。

编译内核

  • 不 同 的 开 发 板 对 应 不 同 的 配 置 文 件 , 配 置 文 件 位 于 内 核 源 码arch/arm/configs/目录。kernel 的编译过程如下:
cd 100ask_stm32mp157_pro-sdk/Linux-5.4/
make 100ask_stm32mp157_pro_defconfig

编译内核

make uImage LOADADDR=0xC2000040 -j8

编译设备树

make dtbs

编译完成后,在 arch/arm/boot 目录下生成 uImage 内核文件, 在arch/arm/boot/dts 目录下生成设备树的二进制文件 stm32mp157c-100ask-512d-v1.dtb。把这 2 个文件复制到/home/book/nfs_rootfs 目录下

cp arch/arm/boot/uImage ~/nfs_rootfs/
cp arch/arm/boot/dts/stm32mp157c-100ask-512d-v1.dtb ~/nfs_rootfs/

编译安装内核模块

编译内核模块

进入内核源码目录后,就可以编译内核模块了:

cd /home/book/100ask_stm32mp157_pro-sdk/Linux-5.4
make ARCH=arm CROSS_COMPILE=arm-buildroot-linux-gnueabihf- modules -j8

会生成ko驱动文件

安装内核模块到 Ubuntu 的NFS目录下备用

后面会使用 tree 命令查看目录结构,如果提示没有该命令,需要执行以下命令安装 tree 命令:

sudo apt install tree
cd /home/book/100ask_stm32mp157_pro-sdk/Linux-5.4
make ARCH=arm INSTALL_MOD_PATH=/home/book/nfs_rootfs INSTALL_MOD_STRIP=1 modules_install

安装好驱动后的/home/book/nfs_rootfs/目录结构如图所示

在这里插入图片描述

安装内核和模块到开发板上

接下来要把这些文件复制到开发板上。假设 Ubuntu IP 为 192.168.5.11,在开发板上执行以下命令:

mount -t nfs -o nolock,vers=3 192.168.5.11:/home/book/nfs_rootfs /mnt
mount /dev/mmcblk2p2 /boot #内核设备树放在/dev/mmcblk2p2分区,需要挂载在开发板的boot
cp /mnt/uImage /boot #拷贝内核到boot目录
cp /mnt/*.dtb /boot #拷贝设备树到boot目录
cp /mnt/lib/modules /lib -rfd #拷贝模块到lib目录,r是递归复制,f是保持链接属性 
sync #强制刷新到flash中
reboot

最后重启开发板,输入uname -a查看内核是否改变,发现使用新的 zImage、dtb、模块了。

编译 led 驱动

从 Windows 上通过 filezilla 把源码传到 Ubuntu的nfs共享文件夹中。

首先,进入上传文件夹的目录,修改 Makefile 文件“KERN_DIR”为自己的内核所在路径:

KERN_DIR = /home/book/100ask_stm32mp157_pro-sdk/Linux-5.4

在这里插入图片描述

在makefile目录的路径下执行“make ”命令就可以编译,编译完成后会生成 led_drv.ko 和ledtest 两个文件。
在这里插入图片描述

在开发板安装驱动模块

下载驱动程序

将驱动程序从nfs文件夹下拷贝出来

cp /mnt/led_drv.ko ./
cp /mnt/ledtest ./

安装驱动模块

在开发板串口终端上执行如下命令,即可安装相应的驱动模块。

insmod led_drv.ko

安装完成后可以执行 lsmod 命令来查看是否安装成功,如果有led drv则表示成功

lsmod

执行结果
在这里插入图片描述

执行测试程序

驱动模块安装成功后,就可以使用测试程序来控制 led 灯的状态,如图所示,操作 led 灯时可同时观察开发板串口旁的灯是否有亮灭的变化。

chmod +x ./ledtest
./ledtest /dev/myled on // 打开 led0 灯
./ledtest /dev/myled off // 关闭 led0 灯

开发板上的绿色 LED 就是/dev 下的 myled,默认是开启了呼吸功能的,需要使用下面的命令关掉此功能:

echo none > /sys/class/leds/heartbeat/trigger

关闭呼吸灯再用驱动程序控制

echo none > /sys/class/leds/heartbeat/trigger
./ledtest /dev/myled on // 打开 led0 灯
./ledtest /dev/myled off // 关闭 led0 灯
http://www.yayakq.cn/news/92511/

相关文章:

  • 深圳手机商城网站设计价格延边网站开发depawo
  • 个人网站要买多大的空间深圳做营销网站公司
  • 网站建设公司哪家好要选磐石网络帝国cms小说网站模板下载地址
  • 东莞网站seo推广优化redis网站开发教程
  • 雍熙网站建设网站建设设计指标
  • 广州网站设计公司济南兴田德润o评价wordpress预留邮箱
  • wordpress网站不显示菜单做网站比较便宜
  • 北京公司网站建设怎么做自己的网站免费
  • app定制大概多少钱seo还可以做哪些推广
  • 做网站大连在线旅游网站
  • 物流网站怎么开做律师网站
  • 阿里云t5做网站pc主页网站建设
  • 哪个网站免费做简历淮安市交通建设局网站
  • 宜昌建网站怎么做音乐mp3下载网站
  • saas是不是做网站《网页设计与网站建设》
  • 怎样解除拦截网站设置北京朝阳区邮政编码
  • 西安高新网站制作wordpress 文章页当前栏目链接
  • 做网站 怎么选择公司网店装修定制
  • 中疾控发布全国新冠感染情况seo白帽优化
  • 厦门营销网站制作wordpress导航菜单位置
  • 福建省住房和城乡建设部网站网站怎么做 凡科
  • 企业电子商务网站建设的最终目的asp网站空间
  • 信用卡在哪些网站上做推广用v9做网站优化
  • 门头沟青岛网站建设注册域名不建设网站
  • 接单做网页的网站我要建个人网站
  • 做网站用什么开发语言网站域名空间多少钱
  • 上海智能模板建站公司注册地址必须是商业用房吗
  • 成都手机wap网站制作吉安网站公司
  • 高端做网站哪家好完成网站建设成本
  • 营销型网站怎么建设用html5做的网站素材