• 【.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已经可以初步工作了。
  • 相关阅读:
    PMP工具与技术篇--4.2.1-4 思维导图(数据表现技术)
    PMP工具与技术篇--4.2.1-3 决策--多标准决策分析技术
    PMP工具与技术篇--4.2.1-2 决策--投票(举手表决)
    PMP工具与技术篇--4.2.1-1 标杆对照技术(数据收集技术)
    PMP工具与技术篇--4.2.1 收集需求工具与技术总结
    PMP--4.2.1-2 需求跟踪矩阵
    PMP--4.2.1-1 需求文件
    PMP--4.2.1 收集需求--需求文件--需求跟踪矩阵
    PMP工具与技术篇--4.2 备案分析(数据分析技术)
    PMP--4.2-2 开发方法
  • 原文地址:https://www.cnblogs.com/yefanqiu/p/1637679.html
Copyright © 2020-2023  润新知