====一个完整的嵌入式设计过程==== * 功能和接口需求 双以太网口,三个uart(两线,两个485,一个232),两路CAN,一路SPI,一个USB OTG,3路ADC,DIO口若干,SD卡(可选),Wifi/BLE支持,主频400MHz以上ARM处理器,嵌入式Linux系统。 本次设计需要对基于SPI控制的16路输出开关芯片MC33996提供驱动支持。 * 接口分析 {{https://www.digi.com/resources/documentation/digidocs/90001531/#container/6ul_sbc_pro/cont_interfaces.htm|ConnectCore i.MX6UL SBC PRO}}单板计算机上带有大部分的接口资源,从硬件手册上可以看到板上带有三个uart:uart2,uart3,uart5,两路CAN的数据线和两个串口的流控线复用,但本次设计无需支持流控,因此可直接使用相关的接口引脚,只需在设备树上禁用流控。SPI接口用的是i.MX6UL的SPI1,USB OTG和SD卡接口板上自带,3路ADC板子上自带,DIO口也非常多。 * 驱动分析 基本上可以直接用单板机的设备树,只需把两个串口的流控禁掉,就可以用两路CAN,SPI驱动可以使用Digi提供的{{https://www.digi.com/resources/documentation/digidocs/embedded/dey/2.6/cc6ul/yocto_c_apix-about.html|接口API扩展库}} * 硬件设计 硬件部分,直接参考ConnectCore i.MX6UL SBC PRO工控板的设计,外围做些裁减,加上uart转232/485电路和MC33996等相关电路。 * 软件设计 软件分为系统开发和应用程序开发两个部分,先按[[digi:arm-embedded:linux:dey:system-development|DEY系统开发]]方法搭好能编译出Linux固件的DEY 2.6系统开发环境,并编译出一个默认的DEY开发板的固件,然后我们着手编译一个稍加改动的固件,相关的变化主要在禁掉两个串口的流控,编译出来后的固件除了能在单板机上测试,也能用在自己的硬件板上。 应用程序开发,根据项目上的要求,安装好SDK后可使用Makfile直接编译方式,也可使用集成好的基于Eclipse的IDE环境。在程序开发完成后,利用系统开发中定制文件系统的方法,把程序集成到固件中 * 项目实战 1. 开发板固件烧写实战:(卡刷,网络刷,linux在线刷) \\ 2. 更改设备树,并测试双CAN在系统中的支持 \\ 3. 查看内核选项,并了解如何应用新内核配置,来生成新固件(比如IPV6支持的开关) \\ 4. SPI驱动和Digi XAPI扩展库的应用,MC33996操作 \\ 待续...