首先为啥移植这个,因为之前移植QT的时候是想着自己编译一个包放进去,但是没有成功因为缺少FB设备。恰巧我们开发板自己走的是GPU,所以没有传统的FB设备出现。这次借助spi_tft实现传统的FB设备。 首先就是修改我们的设备树,尝试多次后发现这个是可以使用的。 上面就是我们使用到的所有IO口。 板子大概是这样的,还有需要修改的地方,比如需要给sck和mosi两个管脚加上上拉电阻,这样方可通信成功。 其此我们是用应该叫ST7789VW。因为这个屏幕的分辨率是240*240的。内核驱动里面的是不一致的会导致不显示或者显示出问题。其次就是还需要修改驱动。 fb_st7789v.c - static int init_display(struct fbtft_par *par)
2 B9 O7 F" _8 K
% Q+ r3 a! k i4 P( \- {
; v4 s- h/ \# ^5 A- B9 P - 1 T5 h, R3 Q' A8 B! t
- par->fbtftops.reset(par);: S _6 d0 u1 n) a
- 0 K* L- j) N+ ]" H# a1 P$ k8 i$ q
- mdelay(50);9 B9 y5 N% a+ e
- 9 |4 `0 R }& G
- write_reg(par,0x36,0x00);
9 K& f9 t( m& Q
) [) K2 ^* [5 H6 s; X- write_reg(par,0x3A,0x05);
I, C3 h/ j1 Z - . K* X: _' A, o4 i" `8 F3 j
- write_reg(par,0xB2,0x0C,0x0C,0x00,0x33,0x33);
% A! N% v9 s p2 n
: g; J m1 P# I* |4 N- write_reg(par,0xB7,0x35);1 O+ B3 ^% L( w u1 L
# G2 ]9 u* \0 i! V& {- write_reg(par,0xBB,0x19);
- a5 \* E7 g# ^0 u - . T9 r2 w8 O2 x" T. Y8 d" U
- write_reg(par,0xC0,0x2C);
2 x2 t8 m7 p0 h# J) f3 i
' C( V, \# Q4 e, O' T2 v2 s- write_reg(par,0xC2,0x01);1 }% f6 ?0 A+ i6 U" j
- + ~* E9 O2 p- ?
- write_reg(par,0xC3,0x12);' x- j, M, w u2 v5 l9 U
- - P& A' b) G; `* \# m" U9 l3 ]( {
- write_reg(par,0xC4,0x20);( x6 [( u' J- s* `
- 7 ~( {& u6 V, F/ t v) y/ {
- write_reg(par,0xC6,0x0F);
! w1 b) o; L& I+ D/ f
! S; k$ z, S8 r& A1 _# [1 ?5 [0 S4 _- write_reg(par,0xD0,0xA4,0xA1);
4 v. S( l. n2 a& b( Q7 g* c& M - - E( m5 F$ J% H! \) {
- write_reg(par,0xE0,0xD0,0x04,0x0D,0x11,0x13,0x2B,0x3F,0x54,0x4C,0x18,0x0D,0x0B,0x1F,0x23);: U8 U2 m+ H8 r9 ~6 @5 P& ?8 l O
' q c5 ?' b9 O- j# B- write_reg(par,0xE1,0xD0,0x04,0x0C,0x11,0x13,0x2C,0x3F,0x44,0x51,0x2F,0x1F,0x1F,0x20,0x23);
; R5 V7 X1 ^+ m( m% Q1 E7 R
" Q* l1 p& F4 u$ N% j" P- write_reg(par,0x21);; {- m, F( u+ h; @# [9 T) z
- 9 {. p" r' ]7 n
- write_reg(par,0x11);( g& Z3 Z$ Q; q) F" I
- . m$ k* A. Z0 R# A) R. T0 S3 c
- mdelay(50);
* g$ _1 R1 K1 @ - ; I# ]; w: Q0 `* Y8 v* H
- write_reg(par,0x29);+ M/ ]+ f, @! q5 ~! W4 R
: O% O" A# C' y* Z, f7 T- mdelay(200);
% P( q- p& N+ Q0 \ D# P7 p
9 x$ c, i2 h C) B O4 b- return 0;
% B: A, a2 D) ` Z - 6 j6 s* }3 |6 @- ]
- }
复制代码 ( G; J6 a9 c; {4 V
初始化显示给修改了。 fbtft-core.c里面也需要修改。这个可以参考网上的教程。 之后在这个路径下把驱动使能。 我们还可以让其显示内核logo。不过我们这里就不修改了。直接用其自带的图片。 可以看到两个小企鹅,因为MP157是双核CPU。 之后启动。 我们可以把我们自己制作的QT解压到目录,然后用命令设置环境变量。之后就可以启动测试了。我们编译的里面包含例程。所以直接运行例程。 这样我们之前自己编译的也就成功了。 还可以用命令测试设备。 如fb-test fb-rect显示随机色块。
$ t X8 `* F' n% v+ f0 b2 W |