基于ARM的 多进程操作系统 -- 建立应用程序开发环境 及 编写第一个应用程序
在前篇中,已经介绍过如何固化操作系统内核到目标平台及运行;http://www.ourdev.cn/bbs/bbs_content.jsp?bbs_sn=4758877&bbs_page_no=1&search_mode=4&search_text=liuweiele&bbs_id=9999
一旦操作系统在硬件平台上运行成功,我们便可开始设计和运行用户应用程序;
接下来,将介绍如何建立应用程序开发环境并开发第一个入门级应用程序;
在这之前,用户需安装ADS开发工具,在这里就不在介绍如何安装和使用该工具;如果用户事先安装了ADS,可以略去这一步骤...
本篇需要用到的资源:
软件开发包(SDK):
点击此处下载 ourdev_642490J1P2IE.rar(文件大小:40K) (原文件名:sdk.rar)
应用程序模板(AppTemplet):
点击此处下载 ourdev_642491ZSASGE.rar(文件大小:345K) (原文件名:AppTemplet.rar)
第一个应用程序工程源码(HelloWorld):
点击此处下载 ourdev_642492ACMX3B.rar(文件大小:148K) (原文件名:HelloWorld.rar) nb,自成一家 SDK安装:
1.下载后解压sdk.rar;
2.复制sdk\inc目录下所有文件到 ADS "..\Include" 目录下
3.复制sdk\lib目录下所有文件到 ADS "..\Lib\armlib" 目录下
4.完成SDK安装
http://cache.amobbs.com/bbs_upload782111/files_39/ourdev_642494UH8GB3.GIF
(原文件名:001.GIF)
http://cache.amobbs.com/bbs_upload782111/files_39/ourdev_642495LJQPL4.GIF
(原文件名:002.GIF) 至此,应用程序开发环境已经建立完成;
接下来将介绍如何编译第一个应用程序:
既然是"第一个应用程序",那还是按照
这条行业内的一条不成文的老规矩:
经典而又乏味的 "HelloWorld" ~~~~
下面是图文介绍说明(为了节省流量和加快网页浏览速度,这里使用了256色 GIF格式;单独打开图片,效果更佳)
http://cache.amobbs.com/bbs_upload782111/files_39/ourdev_642496NW9HUK.GIF
(原文件名:003.GIF)
http://cache.amobbs.com/bbs_upload782111/files_39/ourdev_642497B9U75R.GIF
(原文件名:004.GIF)
http://cache.amobbs.com/bbs_upload782111/files_39/ourdev_642498KFL9E6.GIF
(原文件名:005.GIF)
http://cache.amobbs.com/bbs_upload782111/files_39/ourdev_642499HYQ9TD.GIF
(原文件名:006.GIF)
http://cache.amobbs.com/bbs_upload782111/files_39/ourdev_642500P71Z1U.GIF
(原文件名:007.GIF)
http://cache.amobbs.com/bbs_upload782111/files_39/ourdev_642501THVCTK.GIF
(原文件名:008.GIF)
http://cache.amobbs.com/bbs_upload782111/files_39/ourdev_642502DVW6SQ.GIF
(原文件名:009.GIF) 如何在目标平台上运行该应用程序:
http://cache.amobbs.com/bbs_upload782111/files_39/ourdev_642506P6BWZI.JPG
(原文件名:P5242150.JPG)
http://cache.amobbs.com/bbs_upload782111/files_39/ourdev_642507V78NAN.JPG
(原文件名:P5242151.JPG)
http://cache.amobbs.com/bbs_upload782111/files_39/ourdev_642508DGXYFD.JPG
(原文件名:P5242152.JPG) mark nb mark mark 曲高和寡 我盼星星盼月亮,终于盼到了...强烈感激liuweiele!! 回复【9楼】zzm24
我盼星星盼月亮,终于盼到了...强烈感激liuweiele!!
-----------------------------------------------------------------------
各位有什么疑问,可以在这里反馈. 目前,该系统提供了约600来个API可供用户调用,其中约75%为GUI API;
API原型及功能请参考 "Kernel.h"; "GWIS.h"; "MultiMedia.h"; 神人!!牛B!!收徒弟不??呵呵! 很好很强大~ 马克下,!! 顶啊, 有过 win32 编程经验的人,对该系统的API一定不会陌生,非常容易上手. HelloWorld源码注释
HANDLE hInst;//全局变量,保存进程句柄
/*============================================================================*/
/*============================================================================*/
/*============================================================================*/
//窗口过程
static LRESULT WinProc(HWND hwnd,UINT msg,WPARAM wParam,LPARAM lParam)
{
HDC hdc;
RECT rc;
switch(msg)//消息分支处理
{
case WM_PAINT: //处理窗口客户区绘制消息
hdc=BeginPaint(hwnd); //在WM_PAINT中,使用BeginPaint获得窗口客户区DC
GetClientRect(hwnd,&rc);//获得窗口客户矩形
rc.x =0;
rc.y =0;
//在指定的矩形位置显示字符串,风格:垂直居中|水平居中|单行
DrawText(hdc,"HelloWorld",-1,&rc,DT_VCENTER|DT_CENTER|DT_SINGLELINE);
//绘制结束
EndPaint(hwnd,hdc);
break;
////
default: //其它消息交给系统默认处理
return DefWindowProc(hwnd,msg,wParam,lParam);
}
return WM_NULL;
}
/*============================================================================*/
/*============================================================================*/
//程序入口
int WinMain(HANDLE hInstance,void *argv)
{
HWND hwnd;
MSG msg;
WNDCLASSEX wcex;
////
argv =argv;//进程参数
hInst =hInstance; //设置全局进程句柄
//初始化窗口类
wcex.cbSize = sizeof(WNDCLASSEX);
wcex.style = CS_HREDRAW | CS_VREDRAW; //窗口类风格
wcex.lpfnWndProc = (WNDPROC)WinProc; //窗口过程函数
wcex.cbClsExtra = NULL;
wcex.cbWndExtra = NULL;
wcex.hInstance = hInstance;
wcex.hIcon = NULL;
wcex.hCursor = NULL;
wcex.hbrBackground = NULL;
wcex.lpszMenuName = NULL;
wcex.lpszClassName = __Name;
wcex.hIconSm = NULL;
//在屏幕10,20处创建240x200像素的主窗口;窗口名指向__Name;该函数返回主窗口句柄
//备注:这个系统的CreateWindow比Windows多出一些功能,如果窗口风格包含了WS_NATIVECLASS,
则窗口类可以不用注_册,直接使用本地类;
hwnd =CreateWindow( &wcex,__Name,WS_OVERLAPPEDWINDOW,
10,20,240,200,
NULL,NULL,hInst,NULL);
//显示窗口
ShowWindow(hwnd,SW_SHOW);
//更新窗口
UpdateWindow(hwnd);
//进入主窗口消息循环
while(GetMessage(&msg,hwnd)) //从主窗口消息队列中获取消息,直到窗口退出(WM_QUIT)
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
//退出进程
return TRUE;
}
/*============================================================================*/ mark 牛 高!实在是高! mark mark 收我这个徒弟吧!我想从你这先学学裸奔,能把一些6410裸奔的程序发给我吗?我邮箱 qijian.ckr@163.com 请问楼主,能不能介绍下这个系统,是否是开源免费的? 牛。。。。看代码和WINDOW的很相似。
很亲切。 回复【25楼】Excellence 精益求精
牛。。。。看代码和window的很相似。
很亲切。
-----------------------------------------------------------------------
这里有另一个应用程序,用到了该操作系统更多的API,包括多线程:
http://www.ourdev.cn/bbs/bbs_content.jsp?bbs_sn=4765993&bbs_page_no=1&search_mode=4&search_text=liuweiele&bbs_id=9999 回复【24楼】wuha 致命武器
请问楼主,能不能介绍下这个系统,是否是开源免费的?
-----------------------------------------------------------------------
系统组成: OS + GUI + FS
OS:
1. 支持 多进程+多线程,进程和线程数量无限制
2. 256个线程优先级,支持相同优先级线程,抢占式调度+FIFO调度
3. 内核同步及通讯: Semaphore,Mutex,Queue
4. 设备管理功能
5. 动态内存管理
GUI:
1. 基于类 Win32 消息机制
2. 高效的GDI,支持硬件加速
3. 支持多窗口,剪切,重叠.
4. 绘图缓冲机制,完全避免"刷屏闪烁"问题.
5. 提供高效的块传输功能(支持光栅操作),BitBlt,StretchBlt,TransparentBlt,AlphaBlend,RotateBlt
6. 集成(BMP),GIF,JPEG解码
7. 支持控件子类化,超类化,用户自定义控件
FS(FatFS):
1. 支持多个磁盘设备及根目录
2. 支持多个块读写操作
其它特性:
1. 应用程序无需和操作系统一起编译;应用程序可放在SD卡和NandFlash中由系统加载运行.
2. 占用资源: ROM约 400KB, RAM: 512KB以上(具体和LCD分辨率,系统颜色数,系统服务数量有关)
关于是否免费开源:
该系统会有两种版本:免费版 和 非免费版;
免费版: 在网上公布的,没有作特别声明的,都可以免费使用.
非免费版: 可能不会在网上公布,具体还没定论.
内核部分暂时由本人维护,以尽可能保证应用程序的兼容性;目前,该系统可提供约 600 来个 API 供用户使用.
等BSP模板完善之后,将会逐步公布一些不同硬件平台的完整BSP源码,
到时,各位可以利用提供的BSP模板源码,移植到自己需要的平台. 强烈关注。 又见楼主啊!强人一枚! 新版本操作系统内核 + S3C6410 BSP源码即将公布...... 回复【30楼】liuweiele Liuwei
新版本操作系统内核 + s3c6410 bsp源码即将公布......
-----------------------------------------------------------------------
S3C6410 BSP源码:
http://www.ourdev.cn/bbs/bbs_content.jsp?bbs_sn=4823445&bbs_id=9999 mark nb 学习了 标记下 楼主用友好的ADS1.2作为开发环境,顶上微软的Embedded Visual C++了!用自己设计开发的系统,可以和Widnows CE有得一拼了。
这是难能可贵的,如果用在商业上,这就降低了应用者的门槛。因为windows上搞ARM开发的没几个不会ADS!而且微软的API大伙都熟,这样一来,就什么问题都解决了!
一人之力可以顶人家一大公司,牛人!
如果能找到有慧眼的投资商进行商业操作,都很有前途! 标记下。高人。能跟你混就好了! mark! 回复【楼主位】liuweiele Liuwei
-----------------------------------------------------------------------
mark! 回复【38楼】sczh01
能否直接在非arm平台移植嘛,比如mips/openrisc/nios-2等呢
-----------------------------------------------------------------------
可以移植到其它CPU体系,不过CPU要有MMU功能才能支持多进程;
后续可能会考虑使用GCC编译器,到时会移植到MIPS. mark! 楼主高人,请问这个系统与Wince有什么区别呢?它和Wince相比有哪些优势和劣势呢?
我是菜鸟,如果你觉得是愚昧的问题请别见笑啊! 回复【42楼】yulri
楼主高人,请问这个系统与wince有什么区别呢?它和wince相比有哪些优势和劣势呢?
我是菜鸟,如果你觉得是愚昧的问题请别见笑啊!
-----------------------------------------------------------------------
暂时还没正式与WINCE进行对比测试,所以不好明确表态;
先说缺点:
1. 功能上,这个系统目前比WINCE少,比如网络协议,USB Host,多媒体功能等暂时还没集成,但用户可以自行添加这些功能.
2. 应用程序和BSP移植使用通用的ARM IDE环境(如ADS,MDK,GCC...),对部分人来讲,可能不如MS的 eVC,VSxxxx方便.
3. 新生的操作系统,认可度未知.
...
优点:
1. 资源消耗低于WINCE,目前 完整功能多进程版"内核" + "GUI" + "FS",ROM 约 300KB; RAM: 512KB以上.
2. 进程性能,图形性能高于WINCE.
3. BSP移植比WINCE更简单,方便.
... 中国又多了一位牛人! mark 回复【42楼】yulri
-----------------------------------------------------------------------
另外,这个系统同时支持16位色和24位色,更加适合大分辨率的屏幕,相比WINCE 16位色,具有更佳的显示效果.
而系统的色数和应用程序是无关的,同一应用程序,可以在两种不同色数的硬件平台上正常运行. mark mark mark mark NIU REN ! 厉害啊楼主 佩服的五体投地啊!!!
希望大家都能推广起来!!! 找个项目推广起来,很有前途。 回复【54楼】sblpp
佩服的五体投地啊!!!
希望大家都能推广起来!!!
-----------------------------------------------------------------------
回复【55楼】gtnr
找个项目推广起来,很有前途。
-----------------------------------------------------------------------
如果各位有兴趣组织一个应用开源项目,我必将大力支持.
使用该系统的优势在于:入门简单;扩展性强;各用户不必统一硬件来分享第三方应用程序资源... mark
页:
[1]