您尚未登录。

楼主 # 昨天 21:47:57

晕哥
管理员
所在地: wechat: whycan_cn
注册时间: 2017-09-06
已发帖子: 9,500
积分: 9207

离线

楼主 #1 昨天 21:48:10

晕哥
管理员
所在地: wechat: whycan_cn
注册时间: 2017-09-06
已发帖子: 9,500
积分: 9207

Re: 感谢 本站网友 @zhaoshaox 友情赠送的 新开普 门禁机一台

运行的是全志早期的 camdroid 系统

sys_config.fex

[product]
version = "100"
machine = "ncap-Entrance"

[platform]
eraseflag = 0

[target]
boot_clock = 912
storage_type = -1

[boot_spi_board0]
boot_spi_speed_hz = 60000000
speed_mod = 1

[power_sply]
dcdc2_vol = 1100
dcdc3_vol = 3300
aldo2_vol = 2500
aldo3_vol = 3000
ldo1_vol = 3300
ldo2_vol = 3000
ldo3_vol = 3000

[card_boot]
logical_start = 40960
spinor_verify = 1
sprite_gpio0 =

[card0_boot_para]
card_ctrl = 0
card_high_speed = 1
card_line = 4
sdc_d1 = port:PF00<2><1><default><default>
sdc_d0 = port:PF01<2><1><default><default>
sdc_clk = port:PF02<2><1><default><default>
sdc_cmd = port:PF03<2><1><default><default>
sdc_d3 = port:PF04<2><1><default><default>
sdc_d2 = port:PF05<2><1><default><default>

[twi_para]
twi_port = 0
twi_scl = port:PB06<2><default><default><default>
twi_sda = port:PB07<2><default><default><default>

[uart_para]
uart_debug_port = 2
uart_debug_tx = port:PB00<2><1><default><default>
uart_debug_rx = port:PB01<2><1><default><default>

[jtag_para]
jtag_enable = 0
jtag_ms = port:PF00<3><default><default><default>
jtag_ck = port:PF05<3><default><default><default>
jtag_do = port:PF03<3><default><default><default>
jtag_di = port:PF01<3><default><default><default>

[clock]
pll3 = 297
pll4 = 300
pll6 = 600
pll8 = 360
pll9 = 480
pll10 = 297
pll_ve = 360
pll_isp = 360

[pm_para]
standby_mode = 1

[sys_pwr_dm_para]
vdd_cpua = 1
vdd_sys = 1

[dynamic_standby_para]
enable = 0
dram_selfresh_flag = 1
vdd_cpua_vol = 1200
vdd_sys_vol = 1200

[dram_para]
dram_clk = 360
dram_type = 2
dram_zq = 0x39bb
dram_odt_en = 0
dram_para1 = 283246592
dram_para2 = 0
dram_mr0 = 6208
dram_mr1 = 4
dram_mr2 = 24
dram_mr3 = 4
dram_tpr0 = 0x832087
dram_tpr1 = 0x1c24085
dram_tpr2 = 0x2a01d
dram_tpr3 = 0x0
dram_tpr4 = 0x0
dram_tpr5 = 0x0
dram_tpr6 = 0x0
dram_tpr7 = 0x0
dram_tpr8 = 0x0
dram_tpr9 = 0x0
dram_tpr10 = 0x0
dram_tpr11 = 0x220000
dram_tpr12 = 0x78
dram_tpr13 = 0xd000000

[pm_para]
standby_mode = 0

[wakeup_src_para]
cpu_en = 0
cpu_freq = 48
pll_ratio = 273
dram_selfresh_en = 1
dram_freq = 36
wakeup_src_wl = port:PL07<4><default><default><0>
wakeup_src_bt = port:PL09<4><default><default><0>
bb_wake_ap = port:PL02<4><default><default><0>

[twi0]
twi_used = 1
twi_scl = port:PB06<2><default><default><default>
twi_sda = port:PB07<2><default><default><default>

[twi1]
twi_used = 0
twi_scl = port:PB08<2><default><default><default>
twi_sda = port:PB09<2><default><default><default>

[uart0]
uart_used = 1
uart_port = 1
uart_type = 2
uart_tx = port:PB08<3><1><default><default>
uart_rx = port:PB09<3><1><default><default>

[uart1]
uart_used = 1
uart_port = 2
uart_type = 2
uart_tx = port:PE21<4><1><default><default>
uart_rx = port:PE22<4><1><default><default>

[uart2]
uart_used = 1
uart_port = 0
uart_type = 2
uart_tx = port:PB00<2><1><default><default>
uart_rx = port:PB01<2><1><default><default>

[spi0]
spi_used = 1
spi_cs_bitmap = 1
spi_mosi = port:PC03<3><default><default><default>
spi_miso = port:PC00<3><default><default><default>
spi_sclk = port:PC01<3><default><default><default>
spi_cs0 = port:PC02<3><1><default><default>

[spi_devices]
spi_dev_num = 1

[spi_board0]
modalias = "W25q128"
max_speed_hz = 60000000
bus_num = 0
chip_select = 0
mode = 0
sflash_size = 16

[ctp_para]
ctp_used = 0
ctp_name = "gt911_m785q6"
ctp_twi_id = 1
ctp_twi_addr = 0x5d
ctp_screen_max_x = 800
ctp_screen_max_y = 480
ctp_revert_x_flag = 0
ctp_revert_y_flag = 0
ctp_exchange_x_y_flag = 1
ctp_int_port =
ctp_wakeup =

[ctp_list_para]
ctp_det_used = 0
gt911_ts = 1
ft5x_ts = 1
gt82x = 1
gslX680 = 1
gt9xx_ts = 1
gt811 = 1
zet622x = 1
aw5306_ts = 1

[tkey_para]
tkey_used = 0
tkey_twi_id =
tkey_twi_addr =
tkey_int =

[motor_para]
motor_used = 0
motor_shake = port:power3<1><default><default><1>

[cooler_table]
cooler_count = 4
cooler0 = "1340000 4 4294967295 0"
cooler1 = "1200000 4 4294967295 0"
cooler2 = "1008000 4 4294967295 0"
cooler3 = "648000 4 4294967295 0"

[disp_init]
disp_init_enable = 1
disp_mode = 0
screen0_output_type = 1
screen0_output_mode = 4
screen1_output_type = 1
screen1_output_mode = 4
fb0_format = 0
fb0_pixel_sequence = 0
fb0_scaler_mode_enable = 0
fb0_width = 0
fb0_height = 0
fb1_format = 0
fb1_pixel_sequence = 0
fb1_scaler_mode_enable = 0
fb1_width = 0
fb1_height = 0
lcd0_backlight = 200
lcd1_backlight = 50
lcd0_bright = 50
lcd0_contrast = 50
lcd0_saturation = 57
lcd0_hue = 50
lcd1_bright = 50
lcd1_contrast = 50
lcd1_saturation = 57
lcd1_hue = 50

[lcd0_para]
lcd_used = 1
lcd_driver_name = "default_lcd"
lcd_if = 0
lcd_x = 320
lcd_y = 240
lcd_width = 49
lcd_height = 37
lcd_dclk_freq = 12
lcd_pwm_used = 0
lcd_pwm_ch = 0
lcd_pwm_freq = 50000
lcd_pwm_pol = 1
lcd_pwm_max_limit = 255
lcd_hbp = 30
lcd_ht = 500
lcd_hspw = 10
lcd_vbp = 10
lcd_vt = 300
lcd_vspw = 4
lcd_frm = 1
lcd_hv_clk_phase = 0
lcd_hv_sync_polarity = 0
lcd_gamma_en = 0
lcd_bright_curve_en = 1
lcd_cmap_en = 0
lcdgamma4iep = 22
lcd_bl_en = port:PB04<1><0><default><1>
lcd_power = ""
lcdd2 = port:PE04<3><0><default><default>
lcdd3 = port:PE05<3><0><default><default>
lcdd4 = port:PE06<3><0><default><default>
lcdd5 = port:PE07<3><0><default><default>
lcdd6 = port:PE08<3><0><default><default>
lcdd7 = port:PE09<3><0><default><default>
lcdd10 = port:PE10<3><0><default><default>
lcdd11 = port:PE11<3><0><default><default>
lcdd12 = port:PE12<3><0><default><default>
lcdd13 = port:PE13<3><0><default><default>
lcdd14 = port:PE14<3><0><default><default>
lcdd15 = port:PE15<3><0><default><default>
lcdd18 = port:PE16<3><0><default><default>
lcdd19 = port:PE17<3><0><default><default>
lcdd20 = port:PE18<3><0><default><default>
lcdd21 = port:PE19<3><0><default><default>
lcdd22 = port:PE23<3><0><default><default>
lcdd23 = port:PE24<3><0><default><default>
lcdclk = port:PE00<3><0><3><default>
lcdde = port:PE01<3><0><3><default>
lcdhsync = port:PE02<3><0><3><default>
lcdvsync = port:PE03<3><0><3><default>

[spi_mn_para]
spin_scl = port:PB06<1><default><default><default>
spin_sdo = port:PB03<0><default><default><default>
spin_sdi = port:PB07<1><default><default><default>
spin_cs = port:PB05<1><default><default><default>
spin_reset = port:PG04<1><default><default><default>

[pwm0_para]
pwm_used = 1
pwm_positive = port:PB04<2><0><default><default>

[pwm1_para]
pwm_used = 0
pwm_positive = port:PH01<2><0><default><default>
:       If set gamc_phy to use = 2

[gmac0]
gmac_used = 2
gmac_power1 =

[csi0]
vip_used = 0
vip_mode = 0
vip_dev_qty = 1
vip_define_sensor_list = 0
vip_csi_mck = port:PE20<3><default><default><default>
vip_csi_sck = port:PE21<2><default><default><default>
vip_csi_sda = port:PE22<2><default><default><default>
vip_dev0_mname = "h42_mipi"
vip_dev0_pos = "rear"
vip_dev0_lane = 1
vip_dev0_twi_id = 0
vip_dev0_twi_addr = 96
vip_dev0_isp_used = 1
vip_dev0_fmt = 1
vip_dev0_stby_mode = 0
vip_dev0_vflip = 1
vip_dev0_hflip = 1
vip_dev0_iovdd = ""
vip_dev0_iovdd_vol = 3000000
vip_dev0_avdd = ""
vip_dev0_avdd_vol = 2800000
vip_dev0_dvdd = ""
vip_dev0_dvdd_vol = 2800000
vip_dev0_afvdd = ""
vip_dev0_afvdd_vol = 2800000
vip_dev0_power_en =
vip_dev0_reset = port:PG00<1><default><default><0>
vip_dev0_pwdn =
vip_dev0_flash_en =
vip_dev0_flash_mode =
vip_dev0_af_pwdn =
vip_dev0_act_used = 0
vip_dev0_act_name = "dw9714_act"
vip_dev0_act_slave = 24
vip_dev1_mname = ""
vip_dev1_pos = "front"
vip_dev1_lane = 1
vip_dev1_twi_id = 0
vip_dev1_twi_addr =
vip_dev1_isp_used = 0
vip_dev1_fmt = 1
vip_dev1_stby_mode = 0
vip_dev1_vflip = 0
vip_dev1_hflip = 0
vip_dev1_iovdd = ""
vip_dev1_iovdd_vol = 2800000
vip_dev1_avdd = ""
vip_dev1_avdd_vol = 2800000
vip_dev1_dvdd = ""
vip_dev1_dvdd_vol = 1500000
vip_dev1_afvdd = ""
vip_dev1_afvdd_vol = 2800000
vip_dev1_power_en =
vip_dev1_reset =
vip_dev1_pwdn =
vip_dev1_flash_en =
vip_dev1_flash_mode =
vip_dev1_af_pwdn =

[csi1]
vip_used = 0
vip_mode = 0
vip_dev_qty = 1
vip_define_sensor_list = 0
vip_csi_pck =
vip_csi_mck =
vip_csi_hsync =
vip_csi_vsync =
vip_csi_d0 =
vip_csi_d1 =
vip_csi_d2 =
vip_csi_d3 =
vip_csi_d4 =
vip_csi_d5 =
vip_csi_d6 =
vip_csi_d7 =
vip_csi_d8 =
vip_csi_d10 = port:PE14<2><default><default><default>
vip_csi_d11 = port:PE15<2><default><default><default>
vip_csi_sck = port:PE21<2><default><default><default>
vip_csi_sda = port:PE22<2><default><default><default>
vip_dev0_mname = "ov5640"
vip_dev0_pos = "front"
vip_dev0_twi_id = 4
vip_dev0_twi_addr = 120
vip_dev0_isp_used = 0
vip_dev0_fmt = 0
vip_dev0_stby_mode = 0
vip_dev0_vflip = 0
vip_dev0_hflip = 0
vip_dev0_iovdd = ""
vip_dev0_iovdd_vol = 2800000
vip_dev0_avdd = ""
vip_dev0_avdd_vol = 2800000
vip_dev0_dvdd = ""
vip_dev0_dvdd_vol = 1500000
vip_dev0_afvdd = ""
vip_dev0_afvdd_vol = 2800000
vip_dev0_power_en =
vip_dev0_reset = port:PE23<1><default><default><default>
vip_dev0_pwdn = port:PE24<1><default><default><default>
vip_dev0_flash_en =
vip_dev0_flash_mode =
vip_dev0_af_pwdn =
vip_dev0_act_used = 0
vip_dev0_act_name = "ad5820_act"
vip_dev0_act_slave = 24
vip_dev1_mname = "gc2035"
vip_dev1_pos = "front"
vip_dev1_lane = 1
vip_dev1_twi_id = 4
vip_dev1_twi_addr = 120
vip_dev1_isp_used = 0
vip_dev1_fmt = 1
vip_dev1_stby_mode = 0
vip_dev1_vflip = 0
vip_dev1_hflip = 0
vip_dev1_iovdd = ""
vip_dev1_iovdd_vol = 2800000
vip_dev1_avdd = ""
vip_dev1_avdd_vol = 2800000
vip_dev1_dvdd = ""
vip_dev1_dvdd_vol = 1500000
vip_dev1_afvdd = ""
vip_dev1_afvdd_vol = 2800000
vip_dev1_power_en =
vip_dev1_reset =
vip_dev1_pwdn =
vip_dev1_flash_en =
vip_dev1_flash_mode =
vip_dev1_af_pwdn =

[mmc0_para]
sdc_used = 1
sdc_detmode = 3
sdc_buswidth = 4
sdc_d1 = port:PF00<2><1><2><default>
sdc_d0 = port:PF01<2><1><2><default>
sdc_clk = port:PF02<2><1><2><default>
sdc_cmd = port:PF03<2><1><2><default>
sdc_d3 = port:PF04<2><1><2><default>
sdc_d2 = port:PF05<2><1><2><default>
#sdc_det =
sdc_use_wp = 0
sdc_wp =
sdc_isio = 1
sdc_regulator = "none"

[mmc1_para]
sdc_used = 0
sdc_detmode = 4
sdc_buswidth = 4
sdc_clk = port:PG00<2><1><1><default>
sdc_cmd = port:PG01<2><1><1><default>
sdc_d0 = port:PG02<2><1><1><default>
sdc_d1 = port:PG03<2><1><1><default>
sdc_d2 = port:PG04<2><1><1><default>
sdc_d3 = port:PG05<2><1><1><default>
sdc_det =
sdc_use_wp = 0
sdc_wp =
sdc_isio = 1
sdc_regulator = "none"

[mmc2_para]
sdc_used = 0
sdc_detmode = 3
sdc_buswidth = 8
sdc_clk = port:PC00<2><1><2><default>
sdc_cmd = port:PC01<2><1><2><default>
sdc_d0 = port:PC03<2><1><2><default>
sdc_d1 = port:PC04<2><1><2><default>
sdc_d2 = port:PC05<2><1><2><default>
sdc_d3 = port:PC06<2><1><2><default>
sdc_d4 = port:PC07<2><1><2><default>
sdc_d5 = port:PC08<2><1><2><default>
sdc_d6 = port:PC09<2><1><2><default>
sdc_d7 = port:PC10<2><1><2><default>
emmc_rst = port:PC02<2><1><2><default>
sdc_det =
sdc_use_wp = 0
sdc_wp =
sdc_isio = 0
sdc_regulator = "none"

[usbc0]
usb_used = 1
usb_port_type = 0
usb_detect_type = 0
usb_id_gpio =
usb_det_vbus_gpio =
usb_drv_vbus_gpio =
usb_restrict_gpio =
usb_host_init_state = 0
usb_restric_flag = 0
usb_restric_voltage = 3550000
usb_restric_capacity = 5
usb_regulator_io = "nocare"
usb_regulator_vol = 0
usb_not_suspend = 0

[usb_feature]
vendor_id = 6353
mass_storage_id = 1
adb_id = 2
manufacturer_name = "USB Developer"
product_name = "QRDecoder"
serial_number = "20171020"

[msc_feature]
vendor_name = "USB 2.0"
product_name = "USB Flash Driver"
release = 100
luns = 1

[serial_feature]
serial_unique = 0

[gsensor_para]
gsensor_used = 0
gsensor_twi_id = 1
gsensor_twi_addr = 0x27
gsensor_int1 =
gsensor_int2 =

[gsensor_list_para]
gsensor_det_used = 0
bma250 = 1
da380 = 1
mma8452 = 1
mma7660 = 1
mma865x = 1
afa750 = 1
lis3de_acc = 1
lis3dh_acc = 1
kxtik = 1
dmard10 = 0
dmard06 = 1
mxc622x = 1
fxos8700 = 1
lsm303d = 1

[gps_para]

[wifi_para]
wifi_used = 0
wifi_sdc_id = 1
wifi_usbc_id = 1
wifi_usbc_type = 1
wifi_mod_sel = 2
wifi_power = ""
ap6xxx_wl_regon = port:PL06<1><default><default><0>
ap6xxx_wl_host_wake = port:PL07<4><default><default><0>
ap6xxx_bt_regon = port:PL08<1><default><default><0>
ap6xxx_bt_wake = port:PL10<1><default><default><0>
ap6xxx_bt_host_wake = port:PL09<4><default><default><0>
ap6xxx_lpo_use_apclk = 1

[ls_para]
ls_used = 0
ls_twi_id = 1
ls_twi_addr = 35
ls_int = port:PB07<4><1><default><default>

[ls_list_para]
ls_det_used = 0
ltr_501als = 1
jsa1212 = 1

[compass_para]
compass_used = 0
compass_twi_id = 1
compass_twi_addr = 13
compass_int =

[tdm0]
daudio_used = 0
daudio_master = 4
daudio_select = 1
audio_format = 1
signal_inversion = 1
mclk_fs = 512
sample_resolution = 16
slot_width_select = 16
pcm_lrck_period = 32
pcm_lrckr_period = 1
msb_lsb_first = 0
sign_extend = 0
slot_index = 0
slot_width = 16
frame_width = 1
tx_data_mode = 0
rx_data_mode = 0
i2s_bclk = port:PG11<2><1><default><default>
i2s_lrclk = port:PG10<2><1><default><default>
i2s_dout0 = port:PG12<2><1><default><default>
i2s_dout1 =
i2s_dout2 =
i2s_dout3 =
i2s_din = port:PG13<2><1><default><default>

[audio0]
headphone_vol = 63
cap_vol = 7
Differential_output = 1
pa_single_vol = 63
pa_double_used = 0
pa_double_vol = 31
headphone_direct_used = 0
phone_mic_vol = 6
version_v3_used = 0
headphone_mute_used = 0
audio_hp_ldo = "none"
audio_pa_ctrl = port:PB05<1><default><default><0>
adcagc_used = 0
adcdrc_used = 1
dacdrc_used = 0
adchpf_used = 1
dachpf_used = 0

[s_ir0]
ir_used = 0
ir_rx = port:PL04<2><1><default><default>

[pmu1_para]
pmu_used = 0
pmu_id = 1
pmu_twi_addr = 52
pmu_twi_id = 0
pmu_irq_id = 0
pmu_irq_gpio = port:PG05<6><default><default><default>
pmu_battery_rdc = 249
pmu_battery_cap = 183
pmu_batdeten = 1
pmu_runtime_chgcur = 150
pmu_earlysuspend_chgcur = 150
pmu_suspend_chgcur = 150
pmu_shutdown_chgcur = 150
pmu_init_chgvol = 4200
pmu_init_chgend_rate = 15
pmu_init_chg_enabled = 1
pmu_init_adc_freq = 100
pmu_init_chg_pretime = 50
pmu_init_chg_csttime = 720
pmu_battery_warning1 = 3650
pmu_battery_warning2 = 3600
pmu_bat_para1 = 0
pmu_bat_para2 = 0
pmu_bat_para3 = 0
pmu_bat_para4 = 0
pmu_bat_para5 = 8
pmu_bat_para6 = 16
pmu_bat_para7 = 25
pmu_bat_para8 = 37
pmu_bat_para9 = 47
pmu_bat_para10 = 55
pmu_bat_para11 = 61
pmu_bat_para12 = 68
pmu_bat_para13 = 79
pmu_bat_para14 = 87
pmu_bat_para15 = 94
pmu_bat_para16 = 100
pmu_usbvol_limit = 1
pmu_usbcur_limit = 0
pmu_usbvol = 4000
pmu_usbcur = 0
pmu_usbvol_pc = 4000
pmu_usbcur_pc = 0
pmu_pwroff_vol = 3300
pmu_pwron_vol = 2900
pmu_pekoff_time = 6000
pmu_pekoff_en = 1
pmu_peklong_time = 1500
pmu_pekon_time = 1000
pmu_pwrok_time = 64
pmu_pwrnoe_time = 2000
pmu_hot_shutdown = 1
pmu_suspendpwroff_vol = 3500
power_start = 1

[pmu1_regu]
regulator_count = 7
regulator1 = "axp20_dcdc2 none vdd-sys vdd-cpu vdd-ephy"
regulator2 = "axp20_dcdc3 none vcc-io hpvcc vcc-pd vcc-usb vcc-ephy vcc-mcsi vcc-lcd vcc-wifi vcc-device vcc-csi vcc-ctp"
regulator3 = "axp20_ldo1 none vcc-rtc"
regulator4 = "axp20_ldo2 none  vcc-avcc vcc-pll"
regulator5 = "axp20_ldo3 none vcc-pe csi-avdd"
regulator6 = "axp20_ldo4 none csi-dvdd"
regulator7 = "axp20_ldoio0 none"

[dvfs_table]
extremity_freq = 912000000
max_freq = 912000000
min_freq = 60000000
LV_count = 8
LV1_freq = 912000000
LV1_volt = 1100
LV2_freq = 912000000
LV2_volt = 1100
LV3_freq = 912000000
LV3_volt = 1100
LV4_freq = 912000000
LV4_volt = 1100
LV5_freq = 912000000
LV5_volt = 1100
LV6_freq = 648000000
LV6_volt = 1040
LV7_freq = 0
LV7_volt = 1040
LV8_freq = 0
LV8_volt = 1040

[Vdevice]
Vdevice_used = 1
Vdevice_0 = port:PA01<5><1><2><default>
Vdevice_1 = port:PA02<5><1><2><default>

[dram_dvfs_table]
LV_count = 3
LV1_freq = 552000000
LV1_volt = 1100
LV2_freq = 360000000
LV2_volt = 1000
LV3_freq = 0
LV3_volt = 1000

[fel_key]
fel_key_used = 0
fel_key_min = 255
fel_key_max = 255

[leds_para]
led_1 = port:PG01<1><default><default><0>
led_1_active_low = 1
led_2 = port:PG02<1><default><default><0>
led_2_active_low = 1




离线

楼主 #2 昨天 21:48:13

晕哥
管理员
所在地: wechat: whycan_cn
注册时间: 2017-09-06
已发帖子: 9,500
积分: 9207

Re: 感谢 本站网友 @zhaoshaox 友情赠送的 新开普 门禁机一台

关于显示屏驱动:

  1. sys_config.fex 直接配置

  firmware_backup/20260807_20171020_QRDecode/metadata/sys_config_runtime.fex:291:

  spin_scl   = PB06
  spin_sdo   = PB03
  spin_sdi   = PB07
  spin_cs    = PB05
  spin_reset = PG04

  2. GPIO 编号换算与内核反汇编一致

  全志 GPIO 每个端口 32 个编号:

  PB05 = 1*32+5 = 37
  PB07 = 1*32+7 = 39
  PB03 = 1*32+3 = 35
  PB06 = 1*32+6 = 38
  PG04 = 6*32+4 = 196

  目标内核的 spi_gpio_request() 中实际出现:

  37   -> LCD_CS
  39   -> LCD_SDI
  35   -> LCD_SDO
  38   -> LCD_SCL
  196  -> reset

  对应内核函数也固定使用这些编号:

  CS()       -> 37
  DIN()      -> 39
  Read32Bit()-> 35
  CLK()      -> 38
  RST()      -> 196

  3. 确实用于 LCD 初始化

  目标内核的 displayinit():

  - 加载字符串 spi_mn_para
  - 调用 spi_gpio_request()
  - 调用 SPI_WriteComm() / SPI_WriteData()
  - 发送面板寄存器初始化命令
  - LCD_panel_init() 和 LCD_bl_open() 都会调用它

  所以最终映射是:

   面板信号    GPIO
  ━━━━━━━━━━  ━━━━━━
   SCL/CLK     PB06
  ──────────  ──────
   SDO/读回    PB03
  ──────────  ──────
   SDI/写入    PB07
  ──────────  ──────
   CS          PB05
  ──────────  ──────
   RESET       PG04

  这里 SDI/SDO 是面板端命名:SoC 写入面板的是 PB07,从面板读回的是 PB03。这只证明固件配置和内核使用关系;PCB 上是否实际连到对应 LCD 管脚,还需要原理图或万用表连
  通性确认。
等价调用链是:

  LCD_panel_init()
      -> displayinit()
          -> SPI_WriteComm() / SPI_WriteData()
              -> WriteByte()
                  -> CS() / CLK() / DIN()

  目标内核地址:

  LCD_panel_init  c015e9e8
  displayinit     c0161360
  WriteByte       c01611a8
  SPI_WriteComm   c0161330
  SPI_WriteData   c0161348

  SPI_WriteComm() 和 SPI_WriteData() 只是传入不同标志位:

  void SPI_WriteComm(u8 value)
  {
      WriteByte(value, 0);    // command
  }

  void SPI_WriteData(u8 value)
  {
      WriteByte(value, 1);    // data
  }

  WriteByte() 的等价伪代码:

  void WriteByte(u8 value, int is_data)
  {
      CLK(1);
      CS(0);
      CLK(0);

      DIN(is_data);             // 第 1 位:命令/数据标志
      CLK(1);
      CLK(0);

      for (int bit = 7; bit >= 0; bit--) {
          CLK(0);
          DIN((value >> bit) & 1);
          CLK(1);
      }

      DIN(1);
      CS(1);
  }

  也就是 GPIO bit-bang 的 9-bit 协议:

  1 个命令/数据标志位 + 8 个 MSB-first 数据位

  LCD_panel_init() 自身不直接调用 SPI_WriteComm(),而是在 c015e9f4 跳转到 displayinit()。LCD_bl_open() 也会在背光打开流程中调用同一个 displayinit()。

  displayinit() 的实际顺序大致是:

  spi_gpio_request()
  RST(1) -> RST(0) -> RST(1)

  SPI_WriteComm(01)
  SPI_WriteComm(11)
  Read32Bit(04, &LCD_ID)

  SPI_WriteComm(36); Data(A8)
  SPI_WriteComm(2A); Data(00 00 01 3F)
  SPI_WriteComm(2B); Data(00 00 00 EF)
  SPI_WriteComm(3A); Data(66)
  SPI_WriteComm(B2); Data(0C 0C 00 33 33)
  SPI_WriteComm(B7); Data(75)
  SPI_WriteComm(BB); Data(2C)
  SPI_WriteComm(C0); Data(2C)
  SPI_WriteComm(C2); Data(01 FF)
  SPI_WriteComm(C3); Data(20)
  SPI_WriteComm(C4); Data(20)
  SPI_WriteComm(C6); Data(0F)
  SPI_WriteComm(D0); Data(A4 A1)
  SPI_WriteComm(E0); 发送正伽马表
  SPI_WriteComm(E1); 发送负伽马表
  SPI_WriteComm(E9); Data(11 11 08)
  SPI_WriteComm(B1); Data(42 05 13)
  SPI_WriteComm(B0); Data(11 F0)
  SPI_WriteComm(21)
  SPI_WriteComm(29)

  spi_gpio_free()

  其中:

  - 0x01:软件复位
  - 0x11:退出睡眠
  - 0x04:读取 LCD ID
  - 0x2A/0x2B:设置窗口
  - 0x3A:像素格式
  - 0x21:显示反色
  - 0x29:开启显示

  Read32Bit() 使用 PB03/SDO 读回 32 位 ID,所以启动日志中的:

  LCD_ID:00000000
  displayinit over

  说明初始化函数确实执行,但本次没有读到有效面板 ID。
• 最像的是 Sitronix ST7789 系列,优先候选:

  1. ST7789V
  2. ST7789V2 / ST7789H2 类兼容型号
  3. 某种 ST7789 兼容克隆芯片

  判断依据是初始化命令族高度吻合:

  0x36       MADCTL
  0x3A       COLMOD
  0x2A/0x2B CASET/RASET
  0xB2       PORCTRL
  0xB7       GCTRL
  0xBB       VCOMS
  0xC0       LCMCTRL
  0xC2/C3/C4 电压设置
  0xC6       帧率控制
  0xD0       电源控制
  0xE0/E1    正负伽马表,各 14 字节

  另外:

  - 0x2A 设置 0..319
  - 0x2B 设置 0..239
  - 0x3A = 0x66 表示 18-bit 像素模式
  - 0x21、0x29 分别是反色和开显示

  这组顺序和本地全志 SDK 的 st7789v.c、st7789v_cpu.c 使用的寄存器族基本一致,只是目标固件采用了针对该 320x240 面板调整过的参数。

  相比之下:

  - ST7796S 常见初始化包含 F0 C3/F0 96 解锁和多字节 E8 配置,目标中没有。
  - ILI9341 常见的是 CF/ED/CB/F7 等电源配置,目标序列也不匹配。

  但目前不能确认到具体型号,因为:

  LCD_ID:00000000

  目标内核虽然执行了 Read32Bit(0x04),但没有读回有效 ID。最终需要修复/确认 SDO 回读、查看 LCD 排线丝印,或用逻辑分析仪读取 0x04/0x09 返回值。




离线

楼主 #3 昨天 21:48:18

晕哥
管理员
所在地: wechat: whycan_cn
注册时间: 2017-09-06
已发帖子: 9,500
积分: 9207

Re: 感谢 本站网友 @zhaoshaox 友情赠送的 新开普 门禁机一台

-





离线

楼主 #4 昨天 21:48:21

晕哥
管理员
所在地: wechat: whycan_cn
注册时间: 2017-09-06
已发帖子: 9,500
积分: 9207

Re: 感谢 本站网友 @zhaoshaox 友情赠送的 新开普 门禁机一台

-





离线

楼主 #5 昨天 21:48:24

晕哥
管理员
所在地: wechat: whycan_cn
注册时间: 2017-09-06
已发帖子: 9,500
积分: 9207

Re: 感谢 本站网友 @zhaoshaox 友情赠送的 新开普 门禁机一台

-





离线

楼主 #6 昨天 22:06:25

晕哥
管理员
所在地: wechat: whycan_cn
注册时间: 2017-09-06
已发帖子: 9,500
积分: 9207

Re: 感谢 本站网友 @zhaoshaox 友情赠送的 新开普 门禁机一台

-





离线

楼主 #7 昨天 22:06:30

晕哥
管理员
所在地: wechat: whycan_cn
注册时间: 2017-09-06
已发帖子: 9,500
积分: 9207

Re: 感谢 本站网友 @zhaoshaox 友情赠送的 新开普 门禁机一台

-





离线

页脚

工信部备案:粤ICP备20025096号 Powered by FluxBB

感谢为中文互联网持续输出优质内容的各位老铁们。 QQ: 516333132, 微信(wechat): whycan_cn (哇酷网/挖坑网/填坑网) service@whycan.cn


东莞哇酷科技有限公司开发