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;
}
View Code

 

以上是关于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开发环境安装

里氏替换原则|SOLID as a rock

RK3399pro Linux Rock-X AI组件库支持

列举出不少于三种linux的发行版本名称