搜索
bottom↓
回复: 8

请教 armlinux 上电挂载tf的问题

[复制链接]

出0入0汤圆

发表于 2019-1-15 22:55:27 | 显示全部楼层 |阅读模式
本帖最后由 zyqcome 于 2019-1-15 22:56 编辑

需要上电后挂载 tf卡,并运行tf卡某个目录下的 程序

现状:
        系统运行后可以手动通过 mount /dev/mmcblk0p1 /mnt/mmc 挂载到 对应目录,证明驱动是正常的,挂载后文件访问也正常
        系统版本:Linux version 4.1.15
        我检查过 /dev/目录,下面没有mdev 这个程序,我估计这个系统在编译的时候,没有选择这个支持

问题1:
        我想尝试不通过 mdev能不能实现自动挂载和运行下面的程序。
        目前已做过的尝试:
                把挂载命令放在 /etc/init.d/rcS 的后面,开机没有任何效果
       

问题2:
        是否只有通过 mdev 才能比较简单的实现自动挂载,
        为什么这么说?
                我在网上搜到的绝大部分的例子,一上来就是开启内核 mdev支持
        为什么不重新编译系统以支持 mdev?
                我想mdev应该不是必须的吧,主要是我重装系统后,把 linux 的设备树文件弄丢了,我不到没法不想重新烧写,至少在代码完成功能后才考虑

问题3:
        能不能够,通过烧写好的额 armlinux 系统,读出设备树配置?
                这样可以最安全的重新烧写。

阿莫论坛20周年了!感谢大家的支持与爱护!!

月入3000的是反美的。收入3万是亲美的。收入30万是移民美国的。收入300万是取得绿卡后回国,教唆那些3000来反美的!

出0入0汤圆

 楼主| 发表于 2019-1-16 08:27:17 | 显示全部楼层
没人回复就自己刷起来,

今天早上有个想法,可以先写一个 c++的较小的程序,放在 linux 自己的文件系统中,通过调用系统函数挂在 tf 卡,确认挂载成功后,通过这个程序,启动 内存卡中的程序

这个想法和 shell 编程实现有些像(我搜到过 shell 调用 mdev的,但我现在对 shell 不熟),而 内部文件系统中的程序上电启动,我实现过,剩下的就是,程序间的启动了

出0入0汤圆

 楼主| 发表于 2019-1-20 10:47:00 | 显示全部楼层
本帖最后由 zyqcome 于 2019-1-20 10:48 编辑

努力做到有始有终

今天是来结贴,今天又是一通搜索尝试,终于行了。

我尝试出来的方法,

把这个任务分成两部分,
        1.挂载 tf卡,
        2.运行程序

步骤1:挂载 tf 卡,
        这个用 .sh 文件来实现,我在 /etc/init.d  新建了一个文件 start_up.sh 在里面写入
  1. #!/bin/bash
  2. echo "my_sheet_begin_to_mount_SD_CARD"
  3. mount /dev/mmcblk0p1 /mnt/mmc
  4. echo "my_sheet_mount_SD_CARD_OK"
复制代码


        然后把这段代码加入到开机启动中(这里有一个问题 500 表明一个优先级,越高表示执行的越晚,我已经给到 500,好像还是先于其他执行,不解中)
  1. update-rc.d start_up.sh defaults 500
复制代码

        这段代码提示我的tf卡格式,似乎有些问题,暂时不管这个

步骤2:运行程序
        这个要在所有加载完成后运行,开始我把这部分,一起放在 sh 文件中,运行不了,后来放在了,~/.profile 文件中,能行了。
        现在 .profile 现在的内容:
  1. # ~/.profile: executed by Bourne-compatible login shells.

  2. if [ "$BASH" ]; then
  3.   if [ -f ~/.bashrc ]; then
  4.     . ~/.bashrc
  5.   fi
  6. fi

  7. mesg n

  8. echo "start_to_run_my_app"
  9. cd /mnt/mmc/app/
  10. ./main
复制代码


这样就可以开机启动了,终于不用在开机的时候复制来,复制去的

这是我的尝试,路过的各位有更好的方法,请提示,谢谢

参考资料:
link1: 步骤1
link2:步骤2


---修改1---改错字---

出0入0汤圆

发表于 2019-1-20 16:44:53 来自手机 | 显示全部楼层
有个tf插入事件,写个脚 本自动mount 即可。u 盘也一样

出0入0汤圆

发表于 2019-1-20 16:51:30 | 显示全部楼层
正好在学Linux,楼主给我的提示很大。

出0入0汤圆

发表于 2019-1-20 16:59:26 | 显示全部楼层
也顺便请教一下楼主,比如我想在linux上面安装sqlite3数据库,是不是可以将该数据库做到文件系统镜像里面,然后下次给电路板烧写文件系统镜像的时候,就自动有了该数据库,那样就不需要开机后再安装了。

出10入61汤圆

发表于 2019-1-20 22:09:33 | 显示全部楼层
amxx 发表于 2019-1-20 16:59
也顺便请教一下楼主,比如我想在linux上面安装sqlite3数据库,是不是可以将该数据库做到文件系统镜像里面, ...

sqlite数据库就是个文件,不需要安装。

可以预先定义好结构放进去。当然运行时代码创建也可以

只需要在应用程序里集成SQLITE的库代码即可。

出0入0汤圆

 楼主| 发表于 2019-1-21 07:35:55 来自手机 | 显示全部楼层
amxx 发表于 2019-1-20 16:59
也顺便请教一下楼主,比如我想在linux上面安装sqlite3数据库,是不是可以将该数据库做到文件系统镜像里面, ...

sqlite 确实如楼上所说,是个单文件数据库

在程序中使用就是调用库文件。你要是不想安装,可以把库文件静态调用,编译到程序里。

编译到系统,我知道是可行的,但我没有实践过

出0入0汤圆

 楼主| 发表于 2019-1-21 07:45:07 来自手机 | 显示全部楼层
wxws_wxws 发表于 2019-1-20 16:44
有个tf插入事件,写个脚 本自动mount 即可。u 盘也一样

你这个应该要添加一个服务,监听tf卡的事件,我担心没有mdev,能不能产生这个事件(联想Ubuntu的u盘插入)。

下次试一试这个动态插拔的思路
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-4-26 02:08

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

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