这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 嵌入式开发 » 软件与操作系统 » 【8.05更新μTenux工程下1-wire总线器件二叉树算法驱动有视频+μTe

共69条 6/7 |‹ 2 3 4 5 6 7 跳转至
高工
2013-07-24 09:47:20     打赏
51楼
慢慢习惯用库里边的定义吧,看着很舒心。

菜鸟
2013-07-27 01:43:10     打赏
52楼
楼主好样的,赞一个

高工
2013-07-27 21:07:55     打赏
53楼

这几天在折腾uloong的板子,计划在外设驱动库的基础上,用μTenux进行项目的实现。

想在μTenux的基础上加载Sam3s官方的驱动库,没成功,编译老是出问题,头大

看来对编译环境和C语言的理解有待提高啊。

请坛子里大神们开贴科普一下呀。

休息放松一下,去爱特梅尔官网上转转,发现有DEMO程序,下来玩玩。

顺道贴一下Jlink-Flash的基本用法吧。

先上官方DEMO的源码和bin文件。

——回复可见内容——


打开bin压缩包,里头有个txt说明文档:


1/ Using the USB connection, burn the file demo.bin with SAM-BA at the 
   beginning of SAM3S flash (address 0x400000). Set the GPNVM "Boot from 
   Flash".
2/ Power OFF and ON the board with the USB cable always connected.
3/ A new Removable Disk should appear in the computer explorer.
4/ Copy the demo folder in the root directory of this removable disk : a
   demo folder should appear in it.
5/ When the copy operation is achieved, disconnect the USB cable, and 
   Power OFF and ON the board.
6/ The first screen of the demo ask for Touch Screen calibration, please 
   do this step carefully and then the demo is fully operational.


大致意思是用SAM-BA软件烧写bin文件,烧写结束会发现一个可移动磁盘,然后将源代码文件夹下面的demo文件夹拷到这个可移动磁盘根目录下,掉电重启,即可运行DEMO。

LZ的SAM-BA软件发现不了这块EK,改用Jlink-Flash软件。

打开Jlink-Flash

File-New Project新建下载工程

Option-Project settings-CPU按下图顺序设置目标芯片:


Target-connect就能正常连接上目标芯片

File-Open data file,选择压缩包里头的  sam3s_demo_1.4.bin文件。

这个时候会弹出一个对话框,填上起始地址400000:

按下F6烧写bin文件,ok后,掉电重启,电脑会发现一个122MB、FAT32格式的可移动磁盘,貌似是由板载NAND Flash+Sam3S4C构成的。

将源代码文件中sam3s-ek_demo_1.4\demo\resources\disk目录下demo文件夹全部拷到这个移动硬盘中。

掉电重启,DEMO程序就可以正常运行了。

如果不拷贝这个demo文件夹,DEMO程序就会没有图标哟。

上视频:


视频地址:http://player.youku.com/player.php/sid/XNTg4MjQ5NTY0/v.swf

在DEMO运行过程中,很悲催的发现,QTouch板的K2键(向左键)是无法正常工作的,不知是不是硬件问题。

前段时间有筒子在坛子里反应说这块液晶屏画圆有问题。

ATMEL官方DEMO里面有测试画圆的例子,还是挺圆的。



高工
2013-07-30 01:30:18     打赏
54楼

这几天一直在折腾 Atmel 驱动库的加载,没搞定。据说是ATMEL驱动库和MDK编译宏之间的不和谐。

STM32F4又被人连哄带骗掠夺走了。突然想起手头上还有块Stellaris-LaunchPad,LM4F的U。

跑去TI找了一堆驱动库,打开μTenux工程,加载。

哟呵,还真跑起来了。

在μTenux工程里面小修改了一下,RGB轮闪10次,进入μTenux系统。

虽然没在任务里面点灯,但无论如何,μTenux能够调用驱动库,离用任务点灯也不远了。

先视频伺候(爪机党,只能看个大概,勿拍),睡一觉起来再整理这楼【done】。


视频地址:http://player.youku.com/player.php/sid/XNTg5MTg4MDAw/v.swf



用Stellaris-LaunchPad在μTenux下点灯


建立3个任务A、B、C,每个任务分别使红色LED、蓝色LED、绿色LED闪烁4次,优先级A>B>C。

A、B完成闪烁后进入sleep状态,C完成闪烁后唤醒A和B。

每次闪烁,串口打印相关信息。



视频伺候(这回是真点着了):


视频地址:http://player.youku.com/player.php/sid/XNTg5NTI4NjYw/v.swf


今晚好好再折腾一下sam3的驱动。。。。。


院士
2013-07-30 10:18:40     打赏
55楼
楼主的jlink居然可以支持segger的烧写软件,莫非楼主使用的是正版的jlink??

高工
2013-07-30 15:48:25     打赏
56楼

山寨是科技进步的源动力之一。

我是个希望科技不断进步的好同志,你懂的.


高工
2013-07-31 15:49:43     打赏
57楼

上午起了个早床,看在线讲座。不错。

中午闲着没事,在μTenux工程下写了个nokia_5110的驱动,LM4F平台的。

实际上是从51单片机源代码移植过来的。重点移植了图片点阵的函数。

写字符的函数没有仔细关注。

在此共享,有需要的筒子回复一把哈.

——回复可见内容——

仅仅能用而已,代码风格就不要吐槽了,我只是移植。



在μTenux工程下,建立A、B、C三个任务,优先级A>B>C。


A驱动5110显示LZ的头像并点亮蓝色LED;B驱动5110显示EEPW的LOGO并点亮绿色LED;C是个职业唤醒任务,专门用来唤醒A和B,并点亮红色LED。每个任务都打印自己的作用。


实现的过程中遇到了些小麻烦,由于5110本身不带字库,所以需要占用大量内存空间和任务堆栈空间保存字符点阵数据。默认512大小不行了,我一狠心,直接上到2048.


图片伺候:

任务A,显示snake0301的头像并点亮蓝色LED,猛戳图片可看高清无码图。

任务B,显示EEPW的logo并点亮绿色LED,猛戳图片可看高清无码图。

任务C,只用于唤醒A和B并点亮红色LED,猛戳图片可看高清无码图。

串口打印信息:



还不过瘾,视频伺候,哇咔咔


视频地址:http://player.youku.com/player.php/sid/XNTg5ODMzNTI0/v.swf

这里有个问题十分不解,裸奔的时候5110显示的图案都是正常的,一加到μTenux的任务里面就反色了。

疑惑。

明天开始正式折腾传感器的驱动了。

准备用1-wire的器件,硬件越简单,资源消耗就越严重。

今晚打老虎......


高工
2013-08-05 02:23:54     打赏
58楼

今天完成了主要传感器的二叉树算法驱动,不过发现了一些问题。

μTenux中ltostr()函数貌似有bug,我16位传感器的sn,只能打印出13位。

debug发现变量获取的sn都是正常的,ltostr函数会丢弃一个0.

比如0x03,转换后调用putstring()只能打印出一个3,0x00转换后调用putstring()只能打印一个0.

1-wire总线时序要求比较严格,顺道写了个delay函数,还算比较精确。

上算法驱动和延时函数,老规矩,回复下载。

——回复可见内容——


创建2个任务A和B,优先级相同,采用端口集合点的形式进行任务调度。


A完成传感器的相关操作,B负责打印输出。B调用集合点端口,A回应集合点端口,如此往复。

为了显示效果,把十年前的51板也翻出来了,让上面的18b20最后发挥一下余热。

上图(猛戳可看高清无码图):

LM4F的EK和外围一个小电路。

外围小电路,上拉电阻忘记焊了,果断加上504可调电阻。

这个上拉电阻整整调试了我半天时间,初始化一直不成功。

后来才发现,LM4F的IO口内部没有设置上拉,也可能是我的GPIO配置不对。

反正加了这个上拉电阻,世界清静了。


上保存的串口打印信息:

----------------------------------------------------
        micro Tenux Version 1.6.00(build 0180)      
            Supported MCU is TI LM4F232H5QD         
  Copyright(c) 2008-2013 by Dalian uLoong Co.,Ltd.  
----------------------------------------------------


uT will init the GPIOs;
Rendevons port sample create step 1-Create Rendevons port, ID is 1 !
Rendevons port sample create step 2-Create Task A, ID is 2 !
Rendevons port sample create step 3-Create Task B, ID is 3 !
Rendevons port sample create step 4-Start Task B;


Task B will start task A;
Task B will Cal rendevons port......
 Task A is now accept rendevons port 
Task A is now  Operating the Sensors ...... 
Task A will Rpl rendevons port ...... 
Task B will print the parameter buy Sensors......
 传感器数量为 0;
Task B will Cal rendevons port......
 Task A is now accept rendevons port 
Task A is now  Operating the Sensors ...... 
Task A will Rpl rendevons port ...... 
Task B will print the parameter buy Sensors......
 传感器数量为 0;
Task B will Cal rendevons port......
 Task A is now accept rendevons port 
Task A is now  Operating the Sensors ...... 
Task A will Rpl rendevons port ...... 
Task B will print the parameter buy Sensors......
 传感器数量为 1;
传感器 SN 为 ;28B7A42C2009D------当前温度为:37.8度
Task B will Cal rendevons port......
 Task A is now accept rendevons port 
Task A is now  Operating the Sensors ...... 
Task A will Rpl rendevons port ...... 
Task B will print the parameter buy Sensors......
 传感器数量为 1;
传感器 SN 为 ;28B7A42C2009D------当前温度为:37.1度
Task B will Cal rendevons port......
 Task A is now accept rendevons port 
Task A is now  Operating the Sensors ...... 
Task A will Rpl rendevons port ...... 
Task B will print the parameter buy Sensors......
 传感器数量为 1;
传感器 SN 为 ;28B7A42C2009D------当前温度为:37.1度
Task B will Cal rendevons port......
 Task A is now accept rendevons port 
Task A is now  Operating the Sensors ...... 
Task A will Rpl rendevons port ...... 
Task B will print the parameter buy Sensors......
 传感器数量为 1;
传感器 SN 为 ;28B7A42C2009D------当前温度为:37.1度
Task B will Cal rendevons port......
 Task A is now accept rendevons port 
Task A is now  Operating the Sensors ...... 
Task A will Rpl rendevons port ...... 
Task B will print the parameter buy Sensors......
 传感器数量为 1;
传感器 SN 为 ;28B7A42C2009D------当前温度为:37.1度
Task B will Cal rendevons port......
 Task A is now accept rendevons port 
Task A is now  Operating the Sensors ...... 
Task A will Rpl rendevons port ...... 
Task B will print the parameter buy Sensors......
 传感器数量为 1;
传感器 SN 为 ;28B7A42C2009D------当前温度为:37.1度
Task B will Cal rendevons port......
 Task A is now accept rendevons port 
Task A is now  Operating the Sensors ...... 
Task A will Rpl rendevons port ...... 
Task B will print the parameter buy Sensors......
 传感器数量为 1;
传感器 SN 为 ;28B7A42C2009D------当前温度为:37.1度
Task B will Cal rendevons port......
 Task A is now accept rendevons port 
Task A is now  Operating the Sensors ...... 
Task A will Rpl rendevons port ...... 
Task B will print the parameter buy Sensors......
 传感器数量为 0;
Task B will Cal rendevons port......
 Task A is now accept rendevons port 
Task A is now  Operating the Sensors ...... 
Task A will Rpl rendevons port ...... 
Task B will print the parameter buy Sensors......
 传感器数量为 2;
传感器 SN 为 ;2854EDC530086------当前温度为:85.0度
传感器 SN 为 ;28B7A42C2009D------当前温度为:37.1度
Task B will Cal rendevons port......
 Task A is now accept rendevons port 
Task A is now  Operating the Sensors ...... 
Task A will Rpl rendevons port ...... 
Task B will print the parameter buy Sensors......
 传感器数量为 2;
传感器 SN 为 ;2854EDC530086------当前温度为:34.3度
传感器 SN 为 ;28B7A42C2009D------当前温度为:37.0度
Task B will Cal rendevons port......
 Task A is now accept rendevons port 
Task A is now  Operating the Sensors ...... 
Task A will Rpl rendevons port ...... 
Task B will print the parameter buy Sensors......
 传感器数量为 2;
传感器 SN 为 ;2854EDC530086------当前温度为:34.0度
传感器 SN 为 ;28B7A42C2009D------当前温度为:37.0度
Task B will Cal rendevons port......
 Task A is now accept rendevons port 
Task A is now  Operating the Sensors ...... 
Task A will Rpl rendevons port ...... 
Task B will print the parameter buy Sensors......
 传感器数量为 2;
传感器 SN 为 ;2854EDC530086------当前温度为:33.8度
传感器 SN 为 ;28B7A42C2009D------当前温度为:37.0度
Task B will Cal rendevons port......
 Task A is now accept rendevons port 
Task A is now  Operating the Sensors ...... 
Task A will Rpl rendevons port ...... 
Task B will print the parameter buy Sensors......
 传感器数量为 2;
传感器 SN 为 ;2854EDC530086------当前温度为:33.7度
传感器 SN 为 ;28B7A42C2009D------当前温度为:37.0度
Task B will Cal rendevons port......
 Task A is now accept rendevons port 
Task A is now  Operating the Sensors ...... 
Task A will Rpl rendevons port ...... 
Task B will print the parameter buy Sensors......
 传感器数量为 2;
传感器 SN 为 ;2854EDC530086------当前温度为:33.6度
传感器 SN 为 ;28B7A42C2009D------当前温度为:37.0度
Task B will Cal rendevons port......
 Task A is now accept rendevons port 
Task A is now  Operating the Sensors ...... 
Task A will Rpl rendevons port ...... 
Task B will print the parameter buy Sensors......
 传感器数量为 3;
传感器 SN 为 ;2854EDC530086------当前温度为:33.5度
传感器 SN 为 ;2885D5C5300CF------当前温度为:85.0度
传感器 SN 为 ;28B7A42C2009D------当前温度为:37.0度
Task B will Cal rendevons port......
 Task A is now accept rendevons port 
Task A is now  Operating the Sensors ...... 
Task A will Rpl rendevons port ...... 
Task B will print the parameter buy Sensors......
 传感器数量为 3;
传感器 SN 为 ;2854EDC530086------当前温度为:33.4度
传感器 SN 为 ;2885D5C5300CF------当前温度为:34.5度
传感器 SN 为 ;28B7A42C2009D------当前温度为:37.0度
Task B will Cal rendevons port......
 Task A is now accept rendevons port 
Task A is now  Operating the Sensors ...... 
Task A will Rpl rendevons port ...... 
Task B will print the parameter buy Sensors......
 传感器数量为 3;
传感器 SN 为 ;2854EDC530086------当前温度为:33.3度
传感器 SN 为 ;2885D5C5300CF------当前温度为:34.2度
传感器 SN 为 ;28B7A42C2009D------当前温度为:36.9度
Task B will Cal rendevons port......
 Task A is now accept rendevons port 
Task A is now  Operating the Sensors ...... 
Task A will Rpl rendevons port ...... 
Task B will print the parameter buy Sensors......
 传感器数量为 3;
传感器 SN 为 ;2854EDC530086------当前温度为:33.1度
传感器 SN 为 ;2885D5C5300CF------当前温度为:34.0度
传感器 SN 为 ;28B7A42C2009D------当前温度为:36.9度
Task B will Cal rendevons port......
 Task A is now accept rendevons port 
Task A is now  Operating the Sensors ......


视频伺候:


视频地址:http://player.youku.com/player.php/sid/XNTkxNzQ0ODAw/v.swf


到此,基本外围器件的驱动就ok了,接下来就是各个模块间的联合调试。



高工
2013-08-05 23:27:29     打赏
59楼

鄙人很少能够很深入去了解RTOS,内核之类的云云更是两眼一抹黑。

可以毫不夸张的说,我把第一次献给了μTenux.

凭借着一点点的c语言基础和热情,我开始了μTenux之旅。

接触μTenux也有一段时间了,下面从应用的角度,扒一扒一个菜鸟的看法,欢迎各路大神各种拍砖。

让板砖飞舞得更加猛烈些吧。


编程语言。c语言是必须的,特别是指针和结构体。打开μTenux工程,就能发现大量的这些玩意儿。

几乎和任务相关的所有参数都是使用的结构体类型,参数的传递也基本上都是基于指针的运算。

我不禁想起大学c语言老湿的一句话:学习c,不会用指针,你就相当于没学c。

想想,学java的童鞋多幸福啊。


开发板。必备一块,μTenux支持的芯片很多,我手头上除了sam3s4c外,还有LM4F和STM32F407都能够正常运行μTenux。

学习μTenux之前,恶补了一下μCOSII的内容,发现任哲的那本《嵌入式实时操作系统μC/OS-II原理及应用》一书中,把μCOSII在DOS下进行了移植(可能是移植到x86架构的CPU吧),直接在windows操作系统下用Borland C就能够运行μCOSII,对于手头上没有EK的童鞋可是一大福音。


第一次接触μTenux的时候,觉得这货真恐怖,包含的文件多得让人咋舌。

后来仔细看了一下,发现悠龙真的很用心在做这个系统。

工程文件虽然是很多,但是包含了近20种MCU芯片的在三大编译平台(MDK、IAR、Eclipse,μT-studio应该属于Eclipse范畴吧)下的工程文件。

后来出的v1.6又为各个MCU建立了独立的工程文件,眼睛一下轻松了很多。


起初研究μTenux觉得代码好臃肿,太罗嗦。其实学习到后来,发现这真是个很好的习惯。啰嗦的直接好相处就是代码的可读性很强。

想想也是,看看VHDL和verilog,为什么在严谨、复杂的项目环境中,还是建议采用VHDL,一样的道理。

从个人的角度来看,可以预计,μTenux其实可以应用到一些要求比较高的项目环境中。


慢慢进入系统的实验环节,悠龙的实验也是做得很傻瓜,代码结构清晰明了,就连我这种菜鸟都能很轻松的读懂,基本上只要你认识汉字,就能够根据教程完成实验。

不要觉得简单,有些实验的思考题,还是要静下心来好好思考并尝试一番才能得到答案。


关于学习的方法。μTenux是个很庞大的c语言程序,各种函数,各种参数,想学完了再去应用μTenux是不现实的。个人的办法是,在使用μTenux的时候,同时打开内核规范,一边用一边翻查内核规范。还要注意预编译的情况,不要把预编译的代码误读成正常运行的代码,这点也是偶有切肤之痛的地方。还有c语言的基本功,不懂的地方,还是得多请教大神。



和其他操作系统的差异。据文件记载,μTenux暂不支持虚拟内存的管理,只能管理物理内存。

换句话说MMU是不被支持的。MMU是个双刃剑,Linux支持它,能够很大程度上提高系统的可靠性和安全性,可以运行很大的app;但MMU的存在,使得应用程序的运行时间变得不可控,这可是RTOS的致命缺陷啊。

据说μTenux今后的中间件会支持MMU哟。

μCOSII中,有一个信号量集的东东。

意思是说,某个任务的状态可能由多个信号量才能确定,这多个信号量就组成一个信号量集,完成对某个任务的控制。

而μTenux没有信号量集的概念,不过它的事件标志和μCOSII的信号量集似乎有些相似,估计可以看做等效吧。

μCOSII邮箱好像每次只能容纳1条信息,而μTenux能够收取多条信息,μCOSIII里面直接就取消了邮箱。

貌似和内核实现的机制有关,内核还不是偶研究的对象.虽然有些了解,就不拿出来贻笑大方了。

关于FPU。浮点运算单元是现在很多MCU都具备的东东,目前μTenux还没有支持FPU吧。


一点想法。能推出Proteus仿真不?这话抛出来估计要被大神们鄙视现在Proteus8.0已经包含TI的LM3S的MCU了,我也见过不少在Proteus中仿真μCOS的例程,各种基础实验、μCGUI,有板有眼,做得的确不错。

同时也发现,好多大学的童鞋买不起板,就在Proteus下玩μCOS相当带劲。

要是有,我第一个报名做试验品.

内核规范手册已经对系统相关函数作了很详实的解释,但是内核的一些静态变量,还是比较难找到准确的含义。

想想,如果把这些东西都解释一遍,那内核规范得要多少页啊......


以上个人看法,如有雷同,不胜荣幸,如有异议,欢迎拍砖。




专家
2013-08-05 23:46:48     打赏
60楼
楼主的进程很精彩啊  

共69条 6/7 |‹ 2 3 4 5 6 7 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]