STM32F429DISCovery运行java
来源:互联网 发布:linux 内存使用情况 编辑:程序博客网 时间:2024/06/05 04:21
最近在研究Java虚拟机移植到单片机上,今天已经初步完成。接下来整理下代码,准备过些日子与大家见面!
硬件环境:STM32F429DISCovery
开发工具:em::Blocks(Code::Blocks衍生版本) + arm-none-eabi-gcc+ IntelliJ IDEA + jdk
系统环境:圆景V1.7.8, 已经集成Java虚拟机
一、编译系统内核:
内核大小为占用约75K FLASH,8K RAM。将其余FLASH空间用于应用程序和文件系统,其余的RAM用于内存管理。
下载内核到开发板,终端显示欢迎界面
键入ps、free查询系统基本信息
ps命令显示内核已经包含了6个基本任务线程。
基本指令运行至少占用64字节的内存管理空间。
二、在IntelliJ IDEA 新建一个HelloJava工程。新建一个HelloJava类,做最简单的Hello world!输出
下载完成后执行adoj -x命令从Ram中执行Java程序
Java程序执行完毕。
三、高级应用。
由于内核只为虚拟机提供一个基本输出函数,如果我们需要更多的IO功能,就需要在应用程序中注册函数。
在应用程序中写一个随机数(RNG)驱动函数,
注册到本地函数组当中去:
应用程序会注册一个Ext Task的任务
将应用程序编译
将编译好的应用程序下载到FLASH中去
再新建一个Lucky Java项目
输入一个简易的幸运星程序,如果获取的随机数对100求模等于88就是幸运数。
编译后下到系统RAM中,此时如果执行该java程序,系统会提示有相关的本地函数无法找到
装载刚才编译好的应用程序,装载rand函数,此时,我们可以查到系统已经多了一个刚才提到到Ext Task任务
装载刚才编译好的Java程序,大概过了一会儿,输出提示已经捕捉到幸运数
输入ps和free查看线程和内存使用状况:
为了提高幸运指数,一方面可以缩短Sleep时间,另外一方面可以增加一个Java线程挖掘幸运数,现在我们采取第二种方法,增加一个luckThread类
main函数里面new 一个luckThread类(当然,也可以多new几个)
下载到ram里面去执行
四、固化到文件系统中执行
刚才的程序是保存在RAM中,意味着我们每次上电都要重新加载程序。现在将Lucky.adoj固化到文件系统中,下载到FLASH空间:
复位后查询文件系统,发现了新增的Lucky.adoj文件
加载Lucky程序,对于在文件系统的应用,如果没有上程序锁,可以重复装载,效果如下所示:
后记,开发板上带有一片LCD,将来刚好可以移植一些简单游戏上去。
- STM32F429DISCovery运行java
- STM32F429discovery 显示初探
- stm32f429discovery的USB_HID应用笔记
- java运行
- 【java】运行java程序
- stm32f429discovery模板加入原子哥的延时串口和位带操作
- JAVA运行流程
- java运行环境安装
- java运行过程
- java运行批处理命令
- java的运行流程
- java调用运行命令
- 双击运行JAVA程序
- Java 运行外部程序。
- java运行环境配置
- 运行Java程序
- 命令行运行java文件
- java运行环境配置
- 基于HBASE的并行计算架构之rowkey设计篇
- 第八周上机实践—项目3—顺序串算法
- LeetCode46——Permutations
- 九度OJ 1097:取中值 (中值)
- Xcode7上传App到Appstore,报错Error ITMS-90049:"This bundle is invalid. The bundle identifier contains dis.
- STM32F429DISCovery运行java
- 关于oracle比较时间的用法
- Linux下Android开发资源下载
- mybatis动态SQL语句
- 第八周项目(5):顺序串算法3
- java web项目防止多用户重复登录解决方案
- cookie
- 整理iOS9适配中出现的坑(图文)
- Android Call requires API level 11 (current min is 8)的解决方案