查看: 2654|回复: 12

[原创] 体验RiotBoard记录W1-关于嵌入式Linux学习的一点思考+提问

[复制链接]

78

主题

21

好友

6233

积分

状元

Rank: 6Rank: 6

  • TA的每日心情
    奋斗
    2016-7-29 22:00
  • 签到天数: 726 天

    [LV.9]以坛为家II

    爱板会员勋章 活跃会员勋章 发帖机器勋章

    发表于 2014-5-2 23:59:54 |显示全部楼层
    最近上班的事情比较忙,RiotBaord的体验活动的进度就慢下来了,好不容易到了五一的小长假,终于可以安心继续搞RiotBoard。

    这一周的进度不是很顺利,不过还是要把过程记录一下。
    根据计划,这段时间要搞一下RiotBoard的驱动程序,理想的进度是点亮板子上的那两个用户编程的小灯。之前在玩MCU的时候,只要对着芯片手册配一下寄存器,板子上的小灯就服服帖帖的闪起来了。即使是在RTOS上,设备驱动编程的框架也不是很复杂。但是,在Linux上,事情就不是那么容易了。
    在Linux上搭建一个网站,做个服务器,跟在Windows上做其实差别不大,装一些软件包配置一下就OK了。但是要点亮一盏小灯,那真叫一个费劲,又是创建代码树,又是驱动程序框架,这两天把书翻了不少,人折腾的死去活来,可小灯还是点不起来。突然一拍脑袋,心想我这样折腾到底是要闹哪样?经过喝下一杯咖啡的时间之后,我对嵌入式Linux开发有了一些感想,在此,同像我一样从一个MCU开发者的角度初学嵌入式Linux开发的童鞋们分享一下,如果理解的不对,也希望熟悉Linux开发的前辈们指正。

    实际上,嵌入式Linux的开发大体有两个方向,一个是应用开发,另一个是内核开发(包括驱动程序的移植)。应用开发相对容易一些,就是基于Linux这个系统平台,编写应用程序,实现定制的功能。但实际上,对于典型的应用基本上都有成熟的软件框架,比如说在嵌入式Linux应用最广泛的网络应用领域,LAMP及类似的应用平台已经被无数次地验证其优越性。而使用嵌入式Linux,也正是因为上层有很多成熟的应用软件可以使用,因此才在在嵌入式领域被如此推崇。相比而言,在MCU开发中,缺少一个像Linux一样的标准系统平台(ARM一直在这方面努力,从软件到硬件,赞一声好),因此,在应用开发的层面上还没有向Linux应用软件走得这么远,即使有RTOS的兴起,目前也还处于百家争鸣的阶段,没有哪个RTOS能够一统江湖。对于MCU开发者而言,多数是从看芯片的编程参考手册开始,从寄存器开始,逐层编写代码,从底层驱动到应用程序。绝大多数的MCU开发者将更多的工作量放在编写方便使用的驱动程序以满足特定的应用需要,故而以MCU开发者的角度初学嵌入式Linux,最自然地,也将注意力放在了Linux驱动程序的开发上。对应于嵌入式Linux开发的第二个主要方向,由于Linux系统本身的复杂性,包含驱动开发在内的内核开发为嵌入式Linux的初学者设立相当高的门槛,从工具链的搭建到开发环境的配置,其复杂度与MCU开发相比大了很多。因此,对于一个嵌入式Linux的初学者而言,从零开始写驱动程序并不是一个入门的好方法,至少不是一个能够快速见到成效的过程。

    所以,对于目前还是业余嵌入式Linux玩家的自己,希望在试用的这一段时间内从开发新驱动的角度上去点亮小灯意义就不是很大了。参考在树莓派上的做法,估计后面或者现在已经有了脚本语言调用库(比如python),可以用更方便的方式实现对底层设备的访问,事实上,树莓派上很多应用也都是基于上层的应用软件实现的。在应用级别上的开发学习将具有更实际的意义。

    不过不可否认的是,内核开发虽然相对比较枯燥,技术门槛更高,但这是嵌入式开发工程师专属的神圣领域,也是如我这般具有MCU背景的菜鸟们最终的灵魂归宿之地。这必将是一个修炼的过程,任重而道远,不能急功近利。

    言归正传,目前还在探索如何在通过写驱动程序点亮板子上的小灯。不过后面体验阶段将把重点放在应用设计上。宝贵的试用过程应该更有乐趣才对。这里要提出一个问题,希望坛子里的Linux大牛们或是英蓓特的FAE帮忙解答一下,开贴或群聊均可哈。

    我从英蓓特的RiotBoard产品主页上看到软件支持上有LED指示灯的驱动,可是在RiotBoard启动后,调用“cat /proc/devices” 命令没有看到相关的驱动被加载,难道是默认不加载?或是在编译内核的时候需要配置一下什么东东?但是系统运行的时候,看着板子上的D46指示灯(用户可编程指示灯之一)还是闪得很欢,应该是在后台有程序控制。希望指点迷津,小弟感激不尽。

    还有一个小技巧跟大家分享一下(别见笑哈)。如同在树莓派的使用上,显示屏是个比较纠结的东东。这类卡片机在图像显示上并不能媲美普通的电脑,所以用显示器意义不大,在电脑上用远程登录的方式使用RioBoard还是比较靠谱的。
    我在家里是把RiotBoard接到路由器上的,这样才能保证我既能通过电脑连上公网又能连上RiotBoard,RiotBoard也是类似。但是在默认情况下,RiotBoard的IP地址是DHCP动态分配的,每次都要先连上显示器看以一下IP,然后再把显示器关掉(为了省电)。实际上可以配置成局域网内的静态IP,这样就不用每次都用显示器看IP了。
    最开始通过显示器看到RiotBoard的动态IP是192.168.1.6
    首先我先用putty的ssh连接RiotBoard的动态IP,登录用户名和密码都是默认的“linaro”
    登录之后使用“ifconfig”命令也能看到当前的IP地址。
    然后输入命令如下:
    #sudo  -s  /* 进入root模式,不需要再输入root的密码了 */
    #nano   /etc/network/interfaces /* 使用nano编辑器打开网络配置文件 */
    这里推荐Linux的初学者使用nano软件作为在Linux下的编辑器。Vim虽然被Linux的大牛们各种推崇,但是对于Linux的初学者来说,nano同Notepad相似的操作风格能减少菜鸟们的很多麻烦。
    在interfaces文件中修改至如下内容,不要输入C风格的注释:
    ====================
    auto lo
    iface lo inet loopback

    auto eth0 /* 上电自动启动eth0,也就是板子上RJ45接口对应的网卡 */
    iface eth0 inet static  /* 配置eth0为静态IP地址  */
    address 192.168.1.11 /* 指定静态IP地址,可以替换成你自定义的IP,不过要位于你的局域网的子网内 */
    netmask 255.255.255.0 /* 指定网络掩码 */
    gateway 192.168.1.1 /* 指定路由网关地址 */
    ====================
    更改保存后重新启动网络服务,输入命令:
    sudo  /etc/init.d/networking  restart
    按说来可以看到提示信息输入到一半就卡住了,呵呵,这是说明IP的更改已经生效了。当然,也有没有立即生效的情况,不要着急重新启动板子,再执行一次重启网络服务的命令就行了。
    然后关闭putty的ssh连接,以新的IP(192.168.1.11)建立连接,登录,大功告成。

    回复

    使用道具 举报

    24

    主题

    7

    好友

    1082

    积分

    进士

    Rank: 5Rank: 5

  • TA的每日心情
    开心
    2013-10-31 08:31
  • 签到天数: 16 天

    [LV.4]偶尔看看III

    发表于 2014-5-4 08:58:46 |显示全部楼层
    suyong_yq 兄 文章写得很好哦。
    我前几天也纠结配置静态IP来着,哈哈。以为我板子一直开着,路由器设置了端口转发,结果宿舍哥们把路由重启了,我在外网就访问不了了。

    另外,我这几天也打算尝试在TIoTboard上写简单的驱动,呵呵,正在学习Linux驱动开发,刚看完韦东山老师第一期的视频,打算实践下,有兴趣我们一起讨论啊。
    我最终的目标是在TI噢Tboard上实现2.4G收发。之前在树莓派上是使用的wriingPi这个库实现的。

    回复

    使用道具 举报

    24

    主题

    7

    好友

    1082

    积分

    进士

    Rank: 5Rank: 5

  • TA的每日心情
    开心
    2013-10-31 08:31
  • 签到天数: 16 天

    [LV.4]偶尔看看III

    发表于 2014-5-4 09:02:06 |显示全部楼层
    另外,我还把 怎样设置静态IP的内容放到了问题集锦贴里,不介意吧  http://www.eeboard.com/bbs/forum ... mp;extra=#pid266871
    回复

    使用道具 举报

    78

    主题

    21

    好友

    6233

    积分

    状元

    Rank: 6Rank: 6

  • TA的每日心情
    奋斗
    2016-7-29 22:00
  • 签到天数: 726 天

    [LV.9]以坛为家II

    爱板会员勋章 活跃会员勋章 发帖机器勋章

    发表于 2014-5-4 10:57:33 |显示全部楼层
    gdmgb520 发表于 2014-5-4 09:02
    另外,我还把 怎样设置静态IP的内容放到了问题集锦贴里,不介意吧  http://www.eeboard.com/bbs/forum.php? ...

    介意!非常介意!这事应该在我发出来帖子的时候就要集成进去,这么久才转过去,不够积极啊。
    记得署名就好,呵呵。
    回复

    使用道具 举报

    78

    主题

    21

    好友

    6233

    积分

    状元

    Rank: 6Rank: 6

  • TA的每日心情
    奋斗
    2016-7-29 22:00
  • 签到天数: 726 天

    [LV.9]以坛为家II

    爱板会员勋章 活跃会员勋章 发帖机器勋章

    发表于 2014-5-4 11:00:47 |显示全部楼层
    gdmgb520 发表于 2014-5-4 08:58
    suyong_yq 兄 文章写得很好哦。
    我前几天也纠结配置静态IP来着,哈哈。以为我板子一直开着,路由器设置了端 ...

    树莓派上有现成脚本库可以用,很多使用python搞的,RiotBoard目前没有树莓派那么强大的社区支持,所以在这些软件发布之前,只能自己写驱动了。
    回复

    使用道具 举报

    24

    主题

    7

    好友

    1082

    积分

    进士

    Rank: 5Rank: 5

  • TA的每日心情
    开心
    2013-10-31 08:31
  • 签到天数: 16 天

    [LV.4]偶尔看看III

    发表于 2014-5-4 14:14:14 |显示全部楼层
    suyong_yq 发表于 2014-5-4 10:57
    介意!非常介意!这事应该在我发出来帖子的时候就要集成进去,这么久才转过去,不够积极啊。
    记得署名就 ...

    那必须的,咱是有规矩的人
    回复

    使用道具 举报

    0

    主题

    0

    好友

    109

    积分

    童生

    Rank: 2

  • TA的每日心情
    开心
    2014-5-8 15:38
  • 签到天数: 7 天

    [LV.3]偶尔看看II

    发表于 2014-5-4 15:36:51 |显示全部楼层
    suyong_yq 师兄写的测评相当详细,非常棒,让我对于RiotBoard开发板有了一个比较全面的初步了解~~ 顶起,顶起~
    回复

    使用道具 举报

    78

    主题

    21

    好友

    6233

    积分

    状元

    Rank: 6Rank: 6

  • TA的每日心情
    奋斗
    2016-7-29 22:00
  • 签到天数: 726 天

    [LV.9]以坛为家II

    爱板会员勋章 活跃会员勋章 发帖机器勋章

    发表于 2014-5-4 16:04:53 |显示全部楼层
    地字第一号 发表于 2014-5-4 15:36
    suyong_yq 师兄写的测评相当详细,非常棒,让我对于RiotBoard开发板有了一个比较全面的初步了解~~ 顶起, ...

    靠,这都被你发现了。
    回复

    使用道具 举报

    0

    主题

    0

    好友

    109

    积分

    童生

    Rank: 2

  • TA的每日心情
    开心
    2014-5-8 15:38
  • 签到天数: 7 天

    [LV.3]偶尔看看II

    发表于 2014-5-4 16:07:47 |显示全部楼层
    哈哈~~ 我只是路过而已啦~~
    回复

    使用道具 举报

    1

    主题

    0

    好友

    482

    积分

    秀才

    Rank: 3Rank: 3

  • TA的每日心情
    慵懒
    2015-4-15 09:46
  • 签到天数: 57 天

    [LV.5]常住居民I

    发表于 2014-5-7 08:53:34 |显示全部楼层
    我也尝试过在linux下面自己写驱动,一点头绪都没有。不过给我的感觉就是linux下面所有的硬件驱动都是可以安装或者卸载,这个和MCU里面固定死的不一样。
    回复

    使用道具 举报

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

    关闭

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

    手机版|爱板网 |网站地图  

    GMT+8, 2017-1-19 06:12 , Processed in 0.115558 second(s), 17 queries , Memcache On.

    苏公网安备 32059002001056号

    Powered by Discuz!

    回顶部