zoukankan      html  css  js  c++  java
  • 【.Net Micro Framework PortingKit 02】STM3210E平台构建

    在上一篇《移植初步:环境搭建》文章中,我们介绍了环境搭建的相关工作,下一步我们将要为STM3210E开发板构建平台代码。

    打开.\tools\bin\SolutionWizard\SolutionWizard.exe,我们用平台向导来搭建我们的项目(具体的图文步骤请参见:.Net Micro Framework平台移植初步),详细的步骤如下:

    1、 选择任务(Choose a Task

         由于在.Net Micro Framework源码中已经存在CortexM3_sample平台,所以我们选择克隆一个已存在的平台(Clone an Existing Solution)。

    2、 选择存在的平台(Clone an Existing Solution

    我们选择:CORTEXM3_SAMPLE

    3、 平台属性设置(Solution Properties

    名字(name):STM3210E 注:这个名称很重要,所以一定要慎重填写。

    开发者(Author):你的名字。

    描述(Description):平台说明。

    4、 开发平台基本参数设置(Processor Properties    

       

          内存模式我们选择:Small

         其它相关参数,我们从EM-STM3210E开发板的用户手册中就可以查得到。

    5、 项目选择(Project Selection

    我们选择如下三个项目:

    1)、tinyclr

    2)、NativeSample

    3)、Tinybooter

    6、 功能选择(Feature Selection

    由于STM3210E开发板内存较小,所以我们选择几个比较基本的核心功能,我们选择暂且如下(以后可以根据需要酌情添加即可):

    1)、BlockStorage

    2)、DataStorage

    3)、Debugger

    4)、Diagnostics

    5)、I2C

    6)、InterruptHandler

    7)、Serialization

    8)、SerialPort

    9)、SPI

    10)、Stream

    11)、TinyCore

    7、 支持库选择(Unresolved Library Selection

         该部分的选择和上一步骤的选择紧密相关,如果选择不当,则在编译时,会出现很多错误,所以一定要深入了解后再进行选择,我们目前的选择如下:

       (1)asyncproccanll_pal

    (2)backlight_hal_stubs

    (3)batterycharger_hal_stubs

    (4)batterymeasurement_hal_stubs

    (5)BlockStorageDriver_stubs

    (6)blockstorage_pal

    (7)blockstorage_pal

    (8)cpu_bootstrap_stubs

    (9)Buttons_pal

    (10)cpu_cache_stubs

    (11)COM_pal

    (12)config_pal_Stubs

    (13)CRC

    (14)Crypto_stub

    (15)Debugger

    (16)Debugger_full

    (17)Diagnostics

    (18)diagnostics_pal

    (19)cpu_ebiu_stubs

    (20)events_pal

    (21)FS_Config_stubs

    (22)Gesture_pal_stubs

    (23)GlobalLock_hal

    (24)cpu_gpio_stubs

    (25)Graphics_stub

    (26)Hardware

    (27)heap_pal

    (28)HeapPersistence

    (29)I2C

    (30)cpu_i2c_stubs

    (31)i2c_pal

    (32)system_initialization_hal

    (33)Ink_pal_stubs

    (34)cpu_intc_stubs

    (35)InterruptHandler_stub

    (36)LargeBuffer_hal_stubs

    (37)lcd_hal_stubs

    (38)cpu_LCD_stubs

    (39)Messaging

    (40)cpu_mmu_stubs

    (41)IOPort

    (42)palevent_pal

    (43)cpu_performancecounter_stubs

    (44)piezo_pal_stubs

    (45)cpu_prestackinit_stubs

    (46)RPC_stub

    (47)Serialization

    (48)SimpleHeap_config

    (49)SimpleHeap

    (50)sockets_pal_stubs

    (51)cpu_spi_stubs

    (52)SPOT_Crypto_stub

    (53)SPOT_Graphics_stub

    (54)SPOT_Hardware

    (55)SPOT_Hardware_SerialPort

    (56)SPOT_IO

    (57)SPOT_Messaging_stub

    (58)SPOT_Serialization

    (59)Stream

    (60)cpu_time_stubs

    (61)Time_pal

    (62)TimeService_pal_stubs

    (63)tinycrt_pal_stubs

    (64)TinyHal

    (65)usart_pal

    (66)cpu_usb_stubs

    (67)usb_pal_stubs

    (68)virtualkey_hal_stubs

    (69)cpu_watchdog_stubs

    (70)Watchdog_pal_stubs

    (71)WireProtocol

    做完以上几步,我们便完成了最基本的平台代码构建工作,这时我们可以查看.\MicroFramework_3_0\Solutions目录,就会发现已经存在一个STM3210E的目录了。

    移植.Net Micro Framework一般先调试NativeSample项目,等NativeSample调试成功后,才进行tinyclr的调试工作。一般来说如果NativeSample调试成功,那么.Net Micro Framework的移植工作也就完成了一大半。

    下面我们对NativeSample项目进行scatterfile的配置,由于我们采用MDK工具进行编译,所以我们打开.\Solutions\STM3210E\NativeSample\scatterfile_tools_mdk.xml文件(当然,如果你选用的工具是RVDS,那么你得打开scatterfile_tools_rvds.xml文件),

    为了便于调试,我们把程序放到RAM中运行(主要是因为NativeSample项目比较小,如果我们是在调试TinyClr,那么代码就得放到Nor Flash中去了)。

    查看EM-STM3210E开发板的用户手册,我们知道片内SRAM 64k,片外扩展SRAM128K,所以我们把片外SRAM一份为二,分别分配给堆和栈。片内SRAM我们存放代码,不过不要从0x20000000开始的地址分配,我们今后还要把中断向量表放到从0x20000000开始的地址上去。

    根据以上信息,我们对scatterfile_tools_mdk.xml文件作如下修改:

    <Set Name="Heap_Begin"          Value="0x68000000"/>

     <Set Name="Heap_End"            Value="0x6800FFFC"/>

     <Set Name="Stack_Bottom"        Value="+0"/>

     <Set Name="Stack_Top"           Value="0x6801FFFC"/>

     <If Name="TARGETLOCATION" Value="RAM">

         <Set Name="Code_BaseAddress" Value="0x20001000"/>

         <Set Name="Code_Size"        Value="0x0000F000"/>

         <Set Name="Valid"            Value="true"/>

    </If>

     

    最后我们还得对.\ DeviceCode\Initialization\tinyhal.cpp文件做一些小小的改动,我们把下面的代码先做一下屏蔽,否则程序运行于此便会当机。

    348 //Buttons_Initialize();

    480 //g_Boot_RAMConstants_CRC = Checksum_RAMConstants();

    好了,我们打开命令行,输入如下编译命令并运行:

    Msbuild .\Solutions\ STM3210E \dotNetMF.proj /t:build /p:flavor=debug;memory=ram

    如果在以上步骤中你没有出过什么差错,我想你一定会编译成功的。

    OK,一切顺利,编译成功。但是我们先不要着急用MDK进行调试,因为我们的程序用到了片外SRAM(把它分配给堆和栈),而我们以上的代码中并没有写对其初始化的代码,所以要想使程序正常工作,我们必须首先要初始化片外SRAM。简单期间,我们先编写一个MDK的脚本来完成这个初始化工作。

    好了,这一步的工作就暂告一个段落,下篇文章我便介绍MDK脚本的编写,及在NativeSample.cpp中编写一个控制LED灯闪烁的代码,以期来证明我们的EM-STM3210E已经可以初步工作了。
  • 相关阅读:
    1104 Sum of Number Segments (20 分)(数学问题)
    1092 To Buy or Not to Buy (20 分)(hash散列)
    1082 Read Number in Chinese (25 分)(字符串处理)【背】
    1105 Spiral Matrix (25 分)(模拟)
    初识网络安全及搭建网站(内网)
    HTML5开发者需要了解的技巧和工具汇总(转)
    native+web开发模式之web前端经验分享
    移动平台3G手机网站前端开发布局技巧汇总(转)
    Asp.net 中图片存储数据库以及页面读取显示通用方法详解附源码下载
    使用H3Viewer来查看VS2010的帮助文档
  • 原文地址:https://www.cnblogs.com/yefanqiu/p/1637679.html
Copyright © 2011-2022 走看看