Rock Pi开发笔记(三):Rock Pi 4B plus(基于瑞星微RK3399)板子硬件资源介绍
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Rock Pi开发笔记(三):Rock Pi 4B plus(基于瑞星微RK3399)板子硬件资源介绍相关的知识,希望对你有一定的参考价值。
参考技术A 前言上一篇,概览了整个的rock pi大致系列,我们开始定位为RK3399做评估,入手RK3399,对基本的外设进行解说。
板载外设
USB3.0 × 2
USB2.0 × 2
千兆网口 × 1
音频输入 × 1
MIPI CSI × 1
HDMI × 1
MIPI DSI × 1
802.11 ac / wif × 1
PoE × 1
RTC电池口 × 1
PCIE M.2 × 1
TF × 1
40pin的通用输入输出引脚
GPIO 40 pin介绍
橙色标记的功能是该引脚的默认功能
除电源引脚外,所有引脚都直接布局到 Soc RK3399
对于引脚 3、5、27、28、29 和 31,每个引脚都通过一个 4.7K 上拉电阻连接到 3.0V 电源
引脚 19、21、23、24 直接布局到板上 SPI 设备的引脚
引脚 7 直接布局到板上 MIPI CSI 的引脚
UART异步传输协议
UART2 默认启用为 U-boot 和 Linux 串行控制台,参数为“ 1500000,8,1,N ”(特别注意:串口使用必须使用串口TTL转接板,rock pi的uart是3.3V,没有过串口电平芯片,不能直接对接电脑串口12V电平);
UART2 & UART4 支持广泛的波特率。它包括但不限于以下波特率。例如,115200bps。500000bps、1500000bps 等等;
对于 v1.4 及更高版本的硬件,板载 SPI flash被焊接,UART4 PIN用作SPI 功能;
对于 I2C-2 和 I2C-7
官方已经使用 i2c 设备 e2prom 进行了测试。打开 i2c 设备文件,然后进行读写操作。
统计下单项硬件资源
GPIO引脚 × 27
I2C总线 × 2
**I2S总线(音频总线)**× 1(libmraa库未给出)
SPI总线 × 2
UART总线 × 2
PWM × 2
ADC x 1
5V × 2
3.3V × 2
GND × 8
GPIO输出口的电压特性
IO口的tolerance,应该是能承受的最大电压或者是容差(需要进一步确认)。
GPIO口的序号计算
GPIO口通用库libmraa
像树莓派一样,提供了系统自带的可以操作底层驱动引脚的libmraa库(类似树莓派的wiringpi库一样)。
之前统计的硬件资源:
GPIO引脚 × 27
I2C总线 × 2
I2S总线 (音频总线)× 1(libmraa库未给出)
SPI总线 × 2
UART总线 × 2
PWM × 2
ADC x 1
5V × 2
3.3V × 2
GND × 8
对比libmraa库的使能配置,如下图:
(应该为2个uart,但是2为默认调试口)
SDUT 3568 Rock Paper Scissors 状压统计
就是改成把一个字符串改成三进制状压,然后分成前5位,后5位统计,
然后直接统计 f[i][j][k]代表,后5局状压为k的,前5局比和j状态比输了5局的有多少个人
复杂度是O(T*30000*25*m)m比较小,也就最多几十吧,将将过
#include <cstdio> #include <cstring> #include <algorithm> #include <iostream> #include <cstdlib> #include <vector> #include <cmath> #include <queue> #include <map> #include <string> using namespace std; typedef long long LL; const int N=3e4+5; const int M=243; const int INF=0x3f3f3f3f; int get(int x,int y){ int ret=0; for(int k=0;k<5;++k){ int dig0=x%3,dig1=y%3; if(dig0==(dig1+1)%3)++ret; x/=3,y/=3; } return ret; } vector<int> win[6][M],lose[6][M]; int T,cas,n,a[N][11],ret[N][11],f[6][M][M]; char ch[15]; int main(){ for(int i=0;i<M;++i){ for(int j=0;j<M;++j){ win[get(i,j)][i].push_back(j); lose[get(i,j)][j].push_back(i); } } scanf("%d",&T); while(T--) { scanf("%d",&n); for(int i=0;i<n;++i) { scanf("%s",ch); for(int j=0;j<10;++j) { if(ch[j]==\'R\')a[i][j]=0; else if(ch[j]==\'P\')a[i][j]=1; else a[i][j]=2; } } memset(f,0,sizeof(f)); memset(ret,0,sizeof(ret)); for(int i=0;i<n;++i) { int mask0=0,mask1=0; for(int j=0;j<5;++j)mask0=mask0*3+a[i][j]; for(int j=5;j<10;++j)mask1=mask1*3+a[i][j]; for(int j=0;j<=5;++j) { for(int k=0;k<lose[j][mask0].size();++k) { int t=lose[j][mask0][k]; ++f[j][t][mask1]; } } } for(int i=0;i<n;++i){ int mask0=0,mask1=0; for(int j=0;j<5;++j)mask0=mask0*3+a[i][j]; for(int j=5;j<10;++j)mask1=mask1*3+a[i][j]; for(int s0=0;s0<=5;++s0) for(int s1=0;s1<=5;++s1){ for(int k=0;k<win[s1][mask1].size();++k){ int t=win[s1][mask1][k]; ret[i][s0+s1]+=f[s0][mask0][t]; } } --ret[i][0]; } printf("Case #%d:\\n",++cas); for(int i=0;i<n;++i){ for(int j=0;j<10;++j) printf("%d ",ret[i][j]); printf("%d\\n",ret[i][10]); } } return 0; }
以上是关于Rock Pi开发笔记(三):Rock Pi 4B plus(基于瑞星微RK3399)板子硬件资源介绍的主要内容,如果未能解决你的问题,请参考以下文章
Rock Pi开发笔记:入手Rock Pi 4B plus(基于瑞星微RK3399)板子并制作系统运行
Rock Pi开发笔记:入手Rock Pi 4B plus(基于瑞星微RK3399)板子并制作系统运行
Raspberry Pi 4B C和Python开发环境安装