欢迎进入并行多线程处理器的世界
并行多线程是一种全新的CPU工作模式与软件开发模式,不同于单线程裸机编程,只能顺序执行,也不同于操作系统通过切换造成的多线程执行,并行多线程的各个线程是一直在并行运行的,彼此互不打扰,没有优先级的概念,也没有切换的随机性。
每个线程的运行速度和自己的栈空间都是可以按需配置的,为了客户更容易使用,感芯科技针对MC3172这款芯片,提供了一个图形化界面来方便大家自动生成配置代码,该界面见下图:
该界面提供如下方面的自动配置:
1. 64个线程的运行速度,每个线程最高可以运行在主频的1/4,最低是主频的1/1024,不使用的线程可设置为空闲,空闲线程完全不运行,也不产生功耗。64个线程分属4个线程组,每个线程组的最高主频份额不能超过主频的1/4。
2. 64个线程的运行栈空间,每个线程都有自己独立的栈空间,且在数据空间允许的范围内随意分配,只要所有非空闲线程的栈空间总和不超过数据空间的大小即可(数据空间有192字节的保留区不可使用),栈空间大小需要是4字节的整数倍。
3. 代码空间和数据空间分配,MC3172拥有128K字节的存储器,可以按需分配为96K代码空间+32K数据空间,或64K代码空间+64K数据空间或32K代码空间+96K数据空间,客户根据自己的实际需要选择即可
4. 时钟源选择,MC3172拥有4个时钟源,可在界面按需选择。
当一切配置完毕后,点击生成代码按钮即可得到thread_config.h和MC3172.lds两个文件。
至此,MC3172的主要参数已经配置完毕,用户只需要在main.c对应的threadn_main函数中实现自己的代码即可,此外各个线程之间是共享全局变量的,通过对全局变量的读写,即可实现线程间的数据传送与控制,例如:线程1负责从一个ADC读取数据并存储到全局数组,同时更新全局变量AD_WP,线程2轮询检查AD_WP的数值,如果发现该数据更新则去对应的全局数组取得AD的数据并进行滤波,滤波后的数据存储到另一个全局数组,并更新全局变量FILTER_WP,线程3轮询检查FILTER_WP的数值,如果发现该数据更新则去对应的全局数组取得滤波后的的数据并发送到串口。可见通过对全局变量的合理使用,即可达到线程通信的目的,且没有数据搬移的开销,各个线程也不会被其他线程抢占或被中断打断,所有行为都是确定性时序,安全可靠。
MC3172使用国产软件MounRiver Studio 集成开发环境作为自己的开发环境,用户可以在http://www.mounriver.com/download下载该软件
此外,感芯科技提供了一个固件下载工具见下图,当设备通过USB连接时,该软件会自动识别。选择待下载hex文件后,点击单次运行,程序可以直接通过USB下载到开发板的MC3172芯片内存中,掉电后消失,选择烧录固件则将hex文件烧写到开发板的flash中,掉电后不消失。