Hi Xuecheng,
1. 周期性或者不同层面的软件在不同模式下运行的方式,应该就是ARM的设计初衷。
所以我认为这样的做法是合理的。
比如,软件分为[硬件驱动层]和[应用层],可以设置应用层为User mode,不允许直接访问硬件寄存器,所有动作要调用[硬件驱动层]实现,而在硬件驱动层,CPU才进入previledged mode。一般是Supervisor mode, irq mode或fiq mode。这里可以操作硬件寄存器。
这样的话,不论应用层如何复杂或有可能出现跑飞等问题,都不会错误的修改硬件的配置。
2. TI是可以提供SafeTI软件库的,这套软件经过了第三方的认可,可以用来做安全相关的底层开发。但是不是免费发布的。如果需要的话,您得联系相应的销售人员来获取。
3. CPU工作模式切换例子可以参考HALCoGen生成的代码中的sys_core.asm文件的操作方法,如下图:
Hi Xuecheng,
1. 周期性或者不同层面的软件在不同模式下运行的方式,应该就是ARM的设计初衷。
所以我认为这样的做法是合理的。
比如,软件分为[硬件驱动层]和[应用层],可以设置应用层为User mode,不允许直接访问硬件寄存器,所有动作要调用[硬件驱动层]实现,而在硬件驱动层,CPU才进入previledged mode。一般是Supervisor mode, irq mode或fiq mode。这里可以操作硬件寄存器。
这样的话,不论应用层如何复杂或有可能出现跑飞等问题,都不会错误的修改硬件的配置。
2. TI是可以提供SafeTI软件库的,这套软件经过了第三方的认可,可以用来做安全相关的底层开发。但是不是免费发布的。如果需要的话,您得联系相应的销售人员来获取。
3. CPU工作模式切换例子可以参考HALCoGen生成的代码中的sys_core.asm文件的操作方法,如下图:
举报