SOC FPGA 的HPS端外设引脚复用的设定最后是在preloader和uboot中起作用,不支持动态配置(即当linux系统起来以后,无法在Linux系统中修改)。
一、 在qsys里面设置
最简单的方法是在qsys里面设定SOC 的引脚复用,quartus编译以后会产生hps_isw_handoff文件, 然后preloader/uboot会按照 quartus工程提供的 hps_isw_handoff 信息去设定 HPS 的controller register。
然后dts里面会进一步描述外设节点,比如I2C外设接到I2C0上,会在dts文件里面描述这个节点,通过dtb去传递给linux系统让其知道有哪些外设。
关于SOC FPGA开发板的 HPS端引脚复用的说明可以参考我之前的博客:https://www.cnblogs.com/DoreenLiu/p/14012088.html
二、 在uboot源码里面设置
直接从uboot源码里面设定并编译。
不过这种方式 需要配置的选项很多,所以即使没有使用到FPGA,也建议用第一种方法来设定复用,然后产生preloader/uboot。
三、直接在裸机程序里面设置
如果是不跑系统,直接是跑裸机程序的话,可以直接在裸机程序里面设定相关的控制寄存器(寄存器信息:https://www.intel.com/content/www/us/en/programmable/hps/cyclone-v/hps.html) 即可。可以参考这个文档:
https://software.intel.com/content/www/us/en/develop/topics/fpga-academic/materials-tutorials.html#linux (纯裸机代码控制ADXL345)