打印
[LOOK]

基于新唐M0516的MDK+GCC的编译环境建立与LOOK应用开发

[复制链接]
9729|34
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
缥缈九哥|  楼主 | 2013-5-23 02:05 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 缥缈九哥 于 2013-5-23 02:15 编辑

基于新唐M0516的MDK+GCC的编译环境建立与LOOK应用开发

一,下载安装MDK+GCC编译环境

1,从KEIL主页上下载MDK471A的:http://www.keil.com/fid/edz9p7w1 ... es/eval/mdk471a.exe
        并且默认安装到C盘的:C:\Keil,自行和谐处理。

2,从https://sourcery.mentor.com/GNUToolchain/release2449上面下载Sourcery CodeBench Lite Edition for ARM EABI
        https://sourcery.mentor.com/GNUT ... 3-arm-none-eabi.exe
        并且默认安装到C:\Program Files\CodeSourcery\Sourcery_CodeBench_Lite_for_ARM_EABI
        修改XP下的系统环境变量最前添加:C:\Program Files\CodeSourcery\Sourcery_CodeBench_Lite_for_ARM_EABI\bin;
        
3,在新唐主页上下载安装NU-LINK驱动和ICP软件,并安装到C:\Keil里面。

4,在新唐主页上下载数据手册,BSP包文件。

二,建立“Keil uVision4”工程项目

1,在“D:\works\9G-CM0\”下建立“9G-LOOK”目录,再在“9G-LOOK”目录下建立“look”“src”“inc”“prj”目录;
        在“prj”下再建立“debug\obj”“debug\lst”“release\obj”“release\lst”目录;
        
2,打开桌面的“Keil uVision4”,点开“project”->“New uVision project”选择路径到“D:\works\9G-CM0\9G-LOOK\prj”
        建立“9g-look”工程;
        
3,在接着的“select a CPU Data Base File”上选择“NuMicro Cortex M0 Database”数据库;在里面的“Nuvoton”下拉中选择
        器件中选择“M0516LBN”后点击OK并选择“否”禁止拷贝启动代码文件;
        
4,在“Keil uVision4”窗口的左面的“project”窗口里的“Target 1”改成成“debug”,下面的“Source Group 1”改名成“look”;
        并且在“project”窗口里的“debug”上右击“Add Group”建立一个空文件夹,并改名成“src”;
        
5,点击“Keil uVision4”窗口菜单的“Targets Options”,打开项目配置窗口的“Output”,点开“Select Folder for Objects...”
        选择到“D:\works\9G-CM0\9G-LOOK\prj\debug\obj\”并勾选上“Create HEX File”;

6,        打开项目配置窗口的“Listing”,点开“Select Folder for Listing...”选择到“D:\works\9G-CM0\9G-LOOK\prj\debug\lst\”;并且
    把下面的所有选项全部勾上;
   
7,在项目配置窗口的“User”窗口的编译成功能运行的命令第一行,第二行勾选并分别填入命令:
        “arm-none-eabi-objcopy.exe -O binary -j .text .\debug\obj\!L.elf  .\debug\obj\!L.bin”
        “arm-none-eabi-size.exe  !L.elf”

8,在项目配置窗口“CC”窗口,填上宏定义define:“SEMIHOSTING”,包含路径“..\src;..\inc;..\look\include”
        去掉“enable APCS...”和        “Support Calls Between ....”选择项并勾选上“Compile Thumb code”和真入编译器编译控制参数
        “-pipe -ffunction-sections -fdata-sections -gstrict-dwarf -finline-limit=100000000”
        
        
9,在项目配置窗口的“Linker”窗口里,勾选择上不用标准启动文件和库文件,填入连接脚本:“.\m051.ld”,LOOK的路径
        “..\look\lib”        和连接控制参数“-Wl,--relax -Wl,--gc-sections -Wl,-z -Wl,max-page-size=0”
        
10,在项目配置窗口的“Debug”和“Utilities”窗口里都选择上仿真下载器“Nuvoton Nu-Link Debugger”并勾选择上“Run to main{}”
        和“Update Target Before Debugging”。

11,在“project”->“Manage”->“Compoments...”的“Folders..”里面选择GCC做编译器前缀是“arm-none-eabi-”
        编译器的路径为:“C:\Program Files\CodeSourcery\Sourcery_CodeBench_Lite_for_ARM_EABI\”

12,在“project”->“Manage”->“Compoments...”的“Project...”里面增加一个“release”版本的工程,在这个工程“Targets Options”的
        “Output”和“Listing”指定目录到“release\obj”“release\lst”目录;“CC”里的宏定义“SEMIHOSTING”去掉;

13,右击在“Keil uVision4”窗口的左面的“project”下的“src”文件夹,选择“options”里的“CC”添加上编译选项
        “-std=c++11 -fno-rtti -fno-exceptions -Wno-pmf-conversions”

三,组织“Keil uVision4”工程项目

1,把“j.y.lee@yeah.net”老师的“look”里的“include”“lib”“look-rm.chm”全部复制到“D:\works\9G-CM0\9G-LOOK\look”        目录;
        把“.\m051.ld”复制到“D:\works\9G-CM0\9G-LOOK\prj”下,把“numicro”放到“INC”目录;

2,把“idle.cpp”“idle.h”“init.cpp”“scheduler.cpp”“systick.cpp”“vector.cpp”“semi.cpp”“semi.h”全部复制到
        “D:\works\9G-CM0\9G-LOOK\src”目录;

3,把文件“look.h”和“m0516lan.h”放到目录“D:\works\9G-CM0\9G-LOOK\inc”中,并且把上面的CPP文件添加到工程“Project”
        下面的“Debug”下的“src”中,把“look.h”“attribute.h”“sfr”“m0516lan.h”放到“D:\works\9G-CM0\9G-LOOK\inc”中。
        
4,把“redapricot”和“utils”文件夹及“sfr”文件复制到“D:\works\9G-CM0\9G-LOOK\inc”中;在D:\works\9G-CM0\9G-LOOK\src
建立“led.h”和“led.cpp”文件,编写LED闪烁代码并添加到项目工程的src中。

四,编译及运行工程项目
1,按“F7”进去项目工程的编译,“CTRL+F5”进行DEBUG下载;“F5”全速运行项目即可看到LED在秒闪烁。

2,项目工程源码程序 9G-LOOK.rar (396.58 KB) 。 (注:LOOK部分由j.y.lee@yeah.net老师公布。)

相关帖子

沙发
缥缈九哥|  楼主 | 2013-5-23 02:06 | 只看该作者
顶起

使用特权

评论回复
板凳
john_lee| | 2013-5-23 07:52 | 只看该作者
顶九哥。

使用特权

评论回复
地板
缥缈九哥|  楼主 | 2013-5-23 10:22 | 只看该作者
楼上就是李老师。LOOK是他的心血。。

使用特权

评论回复
5
1638574407| | 2013-5-23 20:44 | 只看该作者

使用特权

评论回复
6
呆板书生| | 2013-5-24 04:28 | 只看该作者
哦?一定要MDK4.71吗?4.54行不?

使用特权

评论回复
7
dirtwillfly| | 2013-5-24 07:59 | 只看该作者
正在下载MDK4.7

使用特权

评论回复
8
stanley85| | 2013-5-25 16:40 | 只看该作者
顶九哥

使用特权

评论回复
9
乡村男孩| | 2013-5-25 17:06 | 只看该作者
谢谢李老师,感谢9G提供这么好的教程,

使用特权

评论回复
10
缥缈九哥|  楼主 | 2013-5-27 15:58 | 只看该作者
顶起。

使用特权

评论回复
11
缥缈九哥|  楼主 | 2013-6-2 11:07 | 只看该作者
一个点灯的任务例子。

#ifndef __LED_H__
#define __LED_H__

#include <look.h>
#include <semi.h>
#include <numicro/m051/sfr/gpio>

class led_task_t : public task_t {
public:
        __INLINE led_task_t(uint_fast8_t priority) : task_t(priority) { }
        void routine();
private:
};

instantiate::task<led_task_t, LOOK_STACK_SIZE> led_task(31);

#endif

#include <led.h>
void led_task_t::routine()
{
        using namespace sfr::gpio;
        uint32_t i=0;
        
        cout << "*** 9G-HOOK V1.00 Build by yuanxihua@21cn.com on (" << __DATE__ << " - " << __TIME__ << " )" << endl;
        while (true)
        {
                delay(LOOK_TICKS_PER_SEC/2);                  // 延时500ms

                PORT4_DOUT[5]=(i++&1);
        }
}

使用特权

评论回复
12
缥缈九哥|  楼主 | 2013-6-10 13:48 | 只看该作者
http://code.google.com/p/look-rtos/  LOOK - Lightweight Object Oriented Kernel (轻型的面向对象的内核)
开源啦

使用特权

评论回复
13
xiao4056| | 2013-6-13 10:28 | 只看该作者
一定要MDK4.71吗?4.54行不?

使用特权

评论回复
14
缥缈九哥|  楼主 | 2013-6-13 19:26 | 只看该作者
我用MDK454

使用特权

评论回复
15
缥缈九哥|  楼主 | 2013-6-13 19:26 | 只看该作者
我用回MDK454

使用特权

评论回复
16
john_lee| | 2013-6-13 21:08 | 只看该作者
九哥不是不想用4.71a,而是在等 nulink 的解决办法(要 keil 解决似乎是妄想了,:lol)

使用特权

评论回复
17
jstele| | 2013-6-14 07:22 | 只看该作者
好東西    學習   這太有用了

使用特权

评论回复
18
minier| | 2013-7-4 14:09 | 只看该作者
太好了!这个必须顶

使用特权

评论回复
19
缥缈九哥|  楼主 | 2013-7-4 17:38 | 只看该作者
希望大家用上GCC,用上LOOK。

使用特权

评论回复
20
ceflsh| | 2013-8-15 19:58 | 只看该作者
学习学习,谢谢九哥,顶一下。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:童时不懂世事艰,笑谈学成锦衣还。岁月无声已先过,男儿有泪空自弹。    莫待沾霜愁上发,须嬴吐气喜开颜。拼搏半年誓如愿,不到长城心不甘。

67

主题

1868

帖子

271

粉丝