在上一篇《移植初步:环境搭建》文章中,我们介绍了环境搭建的相关工作,下一步我们将要为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,片外扩展SRAM为128K,所以我们把片外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已经可以初步工作了。
分享到:
相关推荐
《玩转.NET Micro Framework移植-基于STM32F10x处理器》源程序
《玩转.NET Micro Framework 移植-基于STM32F10x处理器》一书所有的源代码。其它更多的资源可以访问我的blog:http://blog.csdn.net/norains 谢谢!
The Microsoft .NET Micro Framework is a small and efficient .NET runtime environment used to run managed code on devices that are too small and resource constrained for Windows CE and the Compact ...
.NET Micro Framework 电子书
.net micro framework关于文件操作的例子,非常详细。还包括了点击等东西
expert .net micro frameworkexpert .net micro frameworkexpert .net micro framework
.NET Micro Framework自动化测试工具,需.NET Micro Framework3.0和.NET Micro Framework Test Kit支持...
Microsoft .NET Micro Framework 2.5 SDK。 这个我暂时没用,权当放在这里存放,需要的,自己动手。
近来有些刚入门的用户,不太了解.NET Micro Framework开发板的使用,所以写了这篇文档,以期缩短用户对开发板的熟悉时间。
micro framework 4.0 SDK,最新开发工具包
这是我自己改造的.Net Micro Framework模拟器,比windows自带的漂亮多了。 覆盖该目录下的同名文件(路径以实际开发包安装位置为准)即可。 C:\Program Files\Microsoft .NET Micro Framework\v2.0.3036\Tools 支持...
.NET Micro Framework 电子书
http://item.taobao.com/item.htm?id=7117999726 .NET Micro Framework开发板的Key文件的部署说明。
.NET Micro Framework开发板原理图(红牛开发板)
.NET Micro Framework开发板使用手册(红牛开发板)
《精通.NET Micro Framework》 英文PDF + 源码
如何顺利编译.Net Micro Framework Porting Kit 4.1 安装路径不能有空格
.NET Micro Framework for Windows 7(X64) USB驱动安装说明,包含相应的驱动程序
注:比上一个模拟器多了支持方向键控制 这是我自己改造的.Net Micro Framework模拟器,比windows自带的漂亮多了。 覆盖该目录下的同名文件(路径以实际开发包安装位置为准)即可。 C:\Program Files\...