搜索
bottom↓
回复: 57

基于ARM的 多进程操作系统 -- 建立应用程序开发环境 及 编写第一个应用程序

[复制链接]

出0入0汤圆

发表于 2011-5-24 16:09:41 | 显示全部楼层 |阅读模式
在前篇中,已经介绍过如何固化操作系统内核到目标平台及运行;
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)

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

知道什么是神吗?其实神本来也是人,只不过神做了人做不到的事情 所以才成了神。 (头文字D, 杜汶泽)

出0入0汤圆

发表于 2011-5-24 16:19:59 | 显示全部楼层
nb,自成一家

出0入0汤圆

 楼主| 发表于 2011-5-24 16:21:21 | 显示全部楼层
SDK安装:

1.下载后解压sdk.rar;
2.复制sdk\inc目录下所有文件到 ADS "..\Include"    目录下
3.复制sdk\lib目录下所有文件到 ADS "..\Lib\armlib" 目录下
4.完成SDK安装


(原文件名:001.GIF)


(原文件名:002.GIF)

出0入0汤圆

 楼主| 发表于 2011-5-24 16:38:53 | 显示全部楼层
至此,应用程序开发环境已经建立完成;
接下来将介绍如何编译第一个应用程序:
既然是"第一个应用程序",那还是按照
这条行业内的一条不成文的老规矩:
经典而又乏味的 "HelloWorld" ~~~~

下面是图文介绍说明(为了节省流量和加快网页浏览速度,这里使用了256色 GIF格式;单独打开图片,效果更佳)

(原文件名:003.GIF)


(原文件名:004.GIF)


(原文件名:005.GIF)


(原文件名:006.GIF)


(原文件名:007.GIF)


(原文件名:008.GIF)


(原文件名:009.GIF)

出0入0汤圆

 楼主| 发表于 2011-5-24 16:45:03 | 显示全部楼层
如何在目标平台上运行该应用程序:


(原文件名:P5242150.JPG)


(原文件名:P5242151.JPG)


(原文件名:P5242152.JPG)

出0入0汤圆

发表于 2011-5-24 16:52:43 | 显示全部楼层
mark   nb

出0入9汤圆

发表于 2011-5-24 16:58:26 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-5-24 17:05:02 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-5-24 17:28:27 | 显示全部楼层
曲高和寡

出0入0汤圆

发表于 2011-5-24 17:33:33 | 显示全部楼层
我盼星星盼月亮,终于盼到了...强烈感激liuweiele!!

出0入0汤圆

 楼主| 发表于 2011-5-24 17:45:25 | 显示全部楼层
回复【9楼】zzm24
我盼星星盼月亮,终于盼到了...强烈感激liuweiele!!
-----------------------------------------------------------------------

各位有什么疑问,可以在这里反馈.

出0入0汤圆

 楼主| 发表于 2011-5-24 19:48:20 | 显示全部楼层
目前,该系统提供了约600来个API可供用户调用,其中约75%为GUI API;
API原型及功能请参考 "Kernel.h"; "GWIS.h"; "MultiMedia.h";

出0入0汤圆

发表于 2011-5-24 20:23:29 | 显示全部楼层
神人!!牛B!!收徒弟不??呵呵!

出0入0汤圆

发表于 2011-5-24 21:45:42 | 显示全部楼层
很好很强大~

出0入0汤圆

发表于 2011-5-24 22:51:58 | 显示全部楼层
马克下,!!

出0入0汤圆

发表于 2011-5-24 23:09:03 | 显示全部楼层
顶啊,

出0入0汤圆

 楼主| 发表于 2011-5-25 09:53:51 | 显示全部楼层
有过 win32 编程经验的人,对该系统的API一定不会陌生,非常容易上手.

出0入0汤圆

 楼主| 发表于 2011-5-25 17:50:27 | 显示全部楼层
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;       
}

/*============================================================================*/

出0入0汤圆

发表于 2011-5-25 18:04:14 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-5-25 22:04:23 | 显示全部楼层

出0入0汤圆

发表于 2011-5-27 17:21:28 | 显示全部楼层
高!实在是高!

出0入0汤圆

发表于 2011-5-27 17:28:59 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-5-27 17:38:44 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-6-2 00:16:05 | 显示全部楼层
收我这个徒弟吧!我想从你这先学学裸奔,能把一些6410裸奔的程序发给我吗?我邮箱 qijian.ckr@163.com

出0入0汤圆

发表于 2011-6-2 09:37:02 | 显示全部楼层
请问楼主,能不能介绍下这个系统,是否是开源免费的?

出0入0汤圆

发表于 2011-6-3 09:17:56 | 显示全部楼层
牛。。。。看代码和WINDOW的很相似。
很亲切。

出0入0汤圆

 楼主| 发表于 2011-6-3 09:49:40 | 显示全部楼层
回复【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

出0入0汤圆

 楼主| 发表于 2011-6-4 12:57:03 | 显示全部楼层
回复【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模板源码,移植到自己需要的平台.

出0入0汤圆

发表于 2011-6-9 08:37:13 | 显示全部楼层
强烈关注。

出0入0汤圆

发表于 2011-6-9 08:40:19 | 显示全部楼层
又见楼主啊!强人一枚!

出0入0汤圆

 楼主| 发表于 2011-6-20 12:41:49 | 显示全部楼层
新版本操作系统内核 + S3C6410 BSP源码即将公布......

出0入0汤圆

 楼主| 发表于 2011-6-22 16:55:45 | 显示全部楼层
回复【30楼】liuweiele Liuwei
新版本操作系统内核 + s3c6410 bsp源码即将公布......

-----------------------------------------------------------------------
S3C6410 BSP源码:
http://www.ourdev.cn/bbs/bbs_content.jsp?bbs_sn=4823445&bbs_id=9999

出0入0汤圆

发表于 2011-6-23 21:54:30 | 显示全部楼层
mark nb

出0入0汤圆

发表于 2011-6-23 22:37:44 | 显示全部楼层
学习了

出0入0汤圆

发表于 2011-6-23 22:47:27 | 显示全部楼层
标记下

出0入0汤圆

发表于 2011-6-23 23:44:33 | 显示全部楼层
楼主用友好的ADS1.2作为开发环境,顶上微软的Embedded Visual C++了!用自己设计开发的系统,可以和Widnows CE有得一拼了。
这是难能可贵的,如果用在商业上,这就降低了应用者的门槛。因为windows上搞ARM开发的没几个不会ADS!而且微软的API大伙都熟,这样一来,就什么问题都解决了!
一人之力可以顶人家一大公司,牛人!
如果能找到有慧眼的投资商进行商业操作,都很有前途!

出0入0汤圆

发表于 2011-6-24 00:01:46 | 显示全部楼层
标记下。高人。能跟你混就好了!

出0入0汤圆

发表于 2011-6-25 12:50:56 | 显示全部楼层
mark!
头像被屏蔽

出0入0汤圆

发表于 2011-7-4 09:26:30 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽

出0入0汤圆

发表于 2011-7-4 11:04:32 | 显示全部楼层
回复【楼主位】liuweiele Liuwei
-----------------------------------------------------------------------

mark!

出0入0汤圆

 楼主| 发表于 2011-7-4 15:36:45 | 显示全部楼层
回复【38楼】sczh01
能否直接在非arm平台移植嘛,比如mips/openrisc/nios-2等呢
-----------------------------------------------------------------------

可以移植到其它CPU体系,不过CPU要有MMU功能才能支持多进程;
后续可能会考虑使用GCC编译器,到时会移植到MIPS.

出0入0汤圆

发表于 2011-7-7 10:41:18 | 显示全部楼层
mark!

出0入0汤圆

发表于 2011-7-26 15:45:39 | 显示全部楼层
楼主高人,请问这个系统与Wince有什么区别呢?它和Wince相比有哪些优势和劣势呢?
我是菜鸟,如果你觉得是愚昧的问题请别见笑啊!

出0入0汤圆

 楼主| 发表于 2011-7-26 17:52:34 | 显示全部楼层
回复【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更简单,方便.
...

出0入0汤圆

发表于 2011-9-7 15:55:17 | 显示全部楼层
中国又多了一位牛人!

出0入0汤圆

发表于 2011-9-7 16:14:24 | 显示全部楼层
mark

出0入0汤圆

 楼主| 发表于 2011-9-7 18:05:36 | 显示全部楼层
回复【42楼】yulri
-----------------------------------------------------------------------

另外,这个系统同时支持16位色和24位色,更加适合大分辨率的屏幕,相比WINCE 16位色,具有更佳的显示效果.
而系统的色数和应用程序是无关的,同一应用程序,可以在两种不同色数的硬件平台上正常运行.

出0入0汤圆

发表于 2011-9-7 18:14:05 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-9-7 18:24:25 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-9-16 21:58:56 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-9-19 16:05:17 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-11-21 22:39:48 | 显示全部楼层
NIU REN !

出0入0汤圆

发表于 2011-11-30 08:46:57 | 显示全部楼层
厉害啊楼主

出0入0汤圆

发表于 2011-12-13 09:10:54 | 显示全部楼层
佩服的五体投地啊!!!
希望大家都能推广起来!!!

出0入0汤圆

发表于 2011-12-13 09:18:12 | 显示全部楼层
找个项目推广起来,很有前途。

出0入0汤圆

 楼主| 发表于 2011-12-13 10:09:48 | 显示全部楼层
回复【54楼】sblpp
佩服的五体投地啊!!!
希望大家都能推广起来!!!
-----------------------------------------------------------------------

回复【55楼】gtnr
找个项目推广起来,很有前途。
-----------------------------------------------------------------------

如果各位有兴趣组织一个应用开源项目,我必将大力支持.
使用该系统的优势在于:入门简单;扩展性强;各用户不必统一硬件来分享第三方应用程序资源...

出0入0汤圆

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

本版积分规则

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

GMT+8, 2024-7-23 17:24

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

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