RT-Thread_1.2.0+lwip+rtgui0.8.0移植心得

更新时间:2023-07-16 11:35:52 阅读: 评论:0

RT-Thread_1.2.0+lwip+rtgui0.8.0移植⼼得
1.总的感觉就是rtt的移植⽐较简单,因为是国⼈做的系统,所以你经常⽤到的芯⽚在bsp⾥⾯都能找到,不过貌似⽀持最好的还是stm32和lpc系列,此外就是
英文大写字母S3C2440。
2.对于其三个组件finish,lwip和rtgui的感觉,rtt的重视程度就是头2个是亲的,第三个是后的。
3.finish⾃带就是开启的,找对bsp,直接就能运⾏;
4.lwip只要使能宏代码,然后修改基地址和中断函数就可以了。
-------------------------------------------------------------------------------
accumulate先说⼀下rtt的基本流程。
<⾸先从startup.c⾥⾯进⼊,在rtthread_startup()⾥⾯完成所有函数的初始化,这个函数⾥⾯基本
没有什么可修改的,如果你的程序是在外部运⾏,则需要修改ram的宏定义。
tek2.其中rtthread_startup⾥⾯的第⼀个函数rt_hw_board_init最能蒙⼈了,表明看起来是初始化硬件⽤的,实际上,这个函数是初始化rtt所需要的最基本的硬件⽤的,换句话说,这个地⽅也就是移植的时候需要看看,平时的时候不⽤看,也千万不要把外设硬件的初始化放进去,否则容易出问题。我们添加外设则需要放在
rt_application_init()⾥⾯。
<_application_init()⾸先会建⽴两个线程,⼀个是点灯泡的,⼀个是rt_init_thread_entry()。rt_init_thread_entry()主要是进⾏外设和所有应⽤的初始化,⼀般来说,除了中断函数外,我们删减所有的内容都是从这⾥开始的。
<_init_thread_entry()主要是四个功能,
⼀个是rt_components_init(),就是进⾏向量外设初始化。;这个是新增的内容,早期的版本都是⼀堆的if宏定义来判断哪个设备的安装,结果就是内容⼜臭⼜长,新办法则采⽤类linux的机制,也就是向量挂接,这个官⽹有专门的描述,不再细说。
⼀个是内嵌外设的定义,包括finis,dfs,还有lwip,这个⽐较简单,做好宏定义就ok。
⼀个是其他外设定义,主要是rtgui。harry potter 7
最后则是如果你的外设成功初始化,则可以添加需要的线程。
我们在实际的设计过程中,90%的时候都是在跟这个函数,或者他的⼦函数打交道。
5.基本流程结束。
-------------------------------------------------------------------------------------
接着说rtgui的流程
<_hw_lcd_init()
⾸先是进⾏lcd的初始化,这个基本可以完全搬⽤其他lcd的初始化;
shirt是什么意思
其次是构造设备结构给rtt进⾏设备注册,这⾥跟linux的驱动注册有很相似的地⽅,只不是还没有完全的进⾏使⽤,因为在linux中,是把设备当⽂件进⾏出来的,可以打开关闭读取,这个⾥⾯什么都没有,对应的函数是空的,从⾥⾯也可以看出来,rtgui还是⼀个半成品,还有很⼤的空间,⽽且思路应该是做成实时系统和linux两⽤型的图形界⾯。
接着说,重点是⾥⾯的ur接⼝体,这个是需要程序员进⾏设计,也就是需要⼿动移植的地⽅。
struct rt_device_graphic_ops otm4001_ops =
{
otm4001_lcd_t_pixel,
otm4001_lcd_get_pixel,
otm4001_lcd_draw_hline,
otm4001_lcd_draw_vline,
otm4001_lcd_blit_line
};
⽬前就是这⼏个函数,设置好就可以了。
我之前绕了很⼤的弯在这⾥,因为rtgui⼀直在变,我找了好⼏个例程,这⾥都不⼀样,也不知道哪个好⽤,最后⽤到那个1.0.0rtt那个哥们的才完全兼容。
最后是设备在rtt上⾯的注册。
3回头接着看rt_hw_lcd_init()。
2014世界杯排名下⼀步就是 rt_device_init_all();
初代吸血鬼第三季这个是⼲什么的呢,就是重新注册所有rtt的设备,类似于window的扫描硬件。
再就是
lcd = rt_device_find("lcd");
rtgui_graphic_t_device(lcd);
意思就是将rtgui这个设备与lcd挂接。
这⾥有⼀点注意就是,lcd是lcd,rtgui是rtgui,俩个东西不挂接是运⾏不了的。
最后就是        guiapplication_init();这个就是rtgui开始运⾏了
总结⼀下就是,先进⾏lcd的初始化,这⾥⾯⼀个是对硬件初始化,让他能跑起来,其次是函数初始化,让rtgui能识别;
然后是设备的注册,rtt的设备扫描,最后将lcd挂接到rtgui上⾯后,就进⾏rtgui图形界⾯的初始化。
congratulation是什么意思4.demoapplicate下⾯的guiapplication_init()就做了⼀个事情,就是建⽴了application_entry线程,也就是rtgui的线程。
这个线程都做了些什么呢,这⾥说⼀下,资料太少,我⽔平也⼀般,以下内容估计不⼀定对,⼤家讲究着看吧。
⾸先是建⽴⼀个主窗体main_win;
然后建⽴了⼀个⼦窗体the_notebook;
接着将⼦窗体挂钩到主窗体rtgui_container_add_child(RTGUI_CONTAINER(main_win), RTGUI_WIDGET(the_notebook));
最后对例程初始化并显⽰
demo_view_button();星期三的英语单词
rtgui_win_show(main_win, RT_FALSE);
接着就进⼊了循环
rtgui_app_run(app);
sober是什么意思
rtgui_app_destroy(app);
⾄于这玩意怎么⾛的,怎么弄的,sorry,我还没开始研究,⽽且暂时不弄了,因为是打算上实际⼯程的,在移植的这段时间感觉这个rtgui还是不够成熟,所以只有再等等了。
------------------------------------------------------------------------
谢谢⼤家收看。

本文发布于:2023-07-16 11:35:52,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/fan/78/1099589.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:需要   函数   设备   外设   定义   内容
相关文章
留言与评论(共有 0 条评论)
   
验证码:
推荐文章
排行榜
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图