Camera BSP之GPIO/I2C/PMIC简介

ac55ec9881a5c18ed2b465b356bb5d9b.gif

和你一起终身学习,这里是程序员Android

经典好文推荐,通过阅读本文,您将收获以下知识点:

一、GPIO介绍
二、I²C 总线概括
三、PMIC 概括
四、思考

一、GPIO介绍

  • GPIO:General Purpose Input Output (通用输入/输出)

  • GPIOs are I/O pins that provide peripheral connections to the MSM™ chipset.

  • GPIOs can be configured as a general purpose I/O pin or alternative functions.

  • GPIOs can act as an interrupt source.

  • In a multiprocessor MSM, GPIO pins can be controlled by any master

05b90fb15ae772000f64dbb8a0468cae.jpeg

  • MSM GPIO 内部结构

8536c8bfec5eac5a9b127730f99c7832.jpeg

二、I²C 总线概括

  • I²C 是Inter-Integrated Circuit的缩写,它是一种两线接口,一条 Serial Data Line (SDA) ,另一条Serial Clock (SCL)。

    • 内部结构如下图:

2fc4ae6f6b86e08ec271c3c8cd50c579.jpeg

  • 速率:

  • 普通模式:100kHz;

  • 快速模式:400kHz;

  • 高速模式:1.0MHZ,3.4MHz;

  • I2C协议:

  • SDA传输数据是大端传输,每次传输8bit,即一字节。

  • 支持多主控(multimastering),任何时间点只能有一个主控。

  • 总线上每个设备都有自己的一个addr,共7个bit,广播地址全0.

Unable to handle kernel paging request at virtual address 0031b4f7a3617301 Mem abort info: ESR = 0x96000004 EC = 0x25: DABT (current EL), IL = 32 bits SET = 0, FnV = 0 EA = 0, S1PTW = 0 FSC = 0x04: level 0 translation fault Data abort info: ISV = 0, ISS = 0x00000004 CM = 0, WnR = 0 [0031b4f7a3617301] address between user and kernel address ranges Internal error: Oops: 0000000096000004 [#1] PREEMPT SMP cachedump: cachedump ------ in (6) sysdump: (sysdump_panic_event) ------ in (6) sysdump: reg_esr_el1 = 0000000096000004 reg_far_el1 = 0031b4f7a3617301 reg_elr_el1 = ffffffc008498574 unisoc-mailbox smsg_senddie mailbox send die smsg unisoc-mailbox smsg_senddie mailbox send die smsg sysdump: sysdump: ***************************************************** sysdump: * * sysdump: * Sysdump enter, preparing debug info to dump ... * sysdump: * * sysdump: ***************************************************** sysdump: sysdump: reason: P?????, sprd_sysdump_info->crash_key: 0 sysdump: sysdump: ***************************************************** sysdump: * * sysdump: * Preparing debug info done ... * sysdump: * * sysdump: ***************************************************** sysdump: Kernel Offset: 0x80000 from 0xffffffc008000000 PHYS_OFFSET: 0x80000000 CPU features: 0x3,00000181,23300e46 Memory Limit: none Modules linked in: kprobe_filemap(E) kprobe_iowait(E) kprobe_block(E) binder_prio(CE) simtray(OE) silead_fp(OE) goodix_fp(OE) fpc_fp(OE) flash_ic_aw3641(OE) perf_helper(OE) kprobe_iomonitor(E) sla_core(E) unisoc_cachedump(E) unisoc_binder(E) cpumaxfreq(E) unisoc_pnp(E) zram(E) zsmalloc(E) kts_sync(E) screen_onoff_check(E) sprd_coresight_apetb_main(E) sprd_coresight_apetb_ctrl(E) sprd_coresight_etm4x(E) sprd_coresight_replicator(E) sprd_coresight_funnel(E) sprd_coresight_tmc(E) sprd_coresight(E) sprd_suspend_helper(E) ums9230_serdes(E) mipiserdes_base(E) lb(E) unisoc_gnss_pmnotify_ctl(OE) unisoc_gnss_dbg(OE) unisoc_gnss_common_ctl_all(OE) sprd_fm(OE) sprdbt_tty(OE) sprd_compr_2stage_dma(OE) sprd_dmaengine_pcm(OE) snd_soc_sprd_vbc_fe(OE) snd_soc_sprd_vbc_v4(OE) sprd_platform_pcm_routing(OE) snd_soc_sprd_pdm_r2p0(OE) snd_soc_sprd_dummy_codec(OE) snd_soc_sprd_codec_sc2730_power_dev(OE) snd_soc_sprd_codec_sc2730_power(OE) snd_soc_sprd_codec_sc2730(OE) snd_soc_sprd_card(OE) snd_soc_sprd_pa_aw87xxx(OE) snd_soc_sprd_pa_fs1815(OE) lct_audio_info(OE) sprd_audcp_boot(OE) sprd_audcp_dvfs(OE) mcdt_hw_r2p0(OE) audio_pipe(OE) sprd_apipe(OE) sprd_audio_usb_offload(OE) audio_dsp_dump(OE) audio_sipc(OE) audio_mem(OE) agdsp_pd(OE) sprd_djtag(E) sprd_busmonitor(E) djtag_core(E) sprd_apb_busmonitor(E) sprd_cp_dvfs(E) dmc_mpu(E) musb_sprd(E) musb_hdrc(E) chipone_icnl9916x_spi_ts(OE) lct_tp(OE) xiaomi_touch(OE) sprd_pmic_wdt(E) ims_bridge(E) sprd_map(E) sc27xx_pd(E) sprd_typec_displayport(E) upm691x_charger(E) sc89601_charger(E) sgm41513_charger(E) xm_smart_charger(E) sprd_powerupcause(E) sprd_uid(E) sc27xx_fuel_gauge_v2(E) sc27xx_fuel_gauge(E) sprd_charger_manager(E) sprd_battery_info(E) sc27xx_typec(E) ds28e30(E) acl16_slg2(E) battery_secret_manager(E) phy_sprd_qogirl6(E) phy_sprd_commonphy(E) sprd_tcpm(E) sprd_virt_thm(E) thermal_generic_adc(E) sprd_wlan_combo(OE) unisoc_wcn_bsp(OE) sprd_bcl(E) sprd_freq_limit(E) cpufreq_userspace(E) dmc_drv(E) mi_memory(E) sprd_ddr_dvfs(E) sc27xx_tsensor_thermal(E) sc27xx_poweroff(E) sc27xx_adc(E) pwm_sprd(E) spi_sprd(E) pinctrl_sprd_qogirl6(E) pinctrl_sprd(E) ledtrig_pattern(E) leds_sc27xx_bltc(E) jpg(OE) vpu(OE) sprd_vsp_pw_domain(OE) mali_kbase(OE) pinctrl(E) gpio(E) core(E) microarray_fp(OE) extcon_usb_gpio(E) sprd_cpu_cooling(E) sprd_drm(OE) unisoc_mm_reclaim(E) sm5109(OE) sprd_gsp(OE) unisoc_multi_control(E) mmdvfs(OE) apsys_dvfs(E) sprd_cpp(OE) qvga_cxt_sp0821_iii(OE) qvga_st_sc080cs_ii(OE) qvga_cxt_gc6163b_i(OE) sprd_qvga_drv(OE) sprd_camera(OE) sprd_sensor(OE) sprd_dmabuf(OE) cma_heap(E) ion_ipc_trusty(E) system_heap(E) unisoc_iommu(E) sprd_dma(E) unisoc_mm_emem(E) sprd_camsys_pw_domain(OE) flash_ic_ocp81375(OE) flash_ic_ocp8137(OE) sprd_flash_drv(OE) sprd_aphang(E) unisoc_last_kmsg(E) sprd_usbpinmux(E) sprd_bc1p2(E) lc_charger_class(E) cfg80211(E) sprd_ptm(E) sprd_shm(E) trusty_virtio(E) trusty_ipc(E) trusty_irq(E) trusty_log(E) trusty_pm(E) trusty(E) unisoc_userlog(E) mi_thermal_interface(E) nfc_i2c(E) sprd_trng(E) sprd_cache_print(E) sprd_usb_f_rndis(E) sprd_u_ether(E) sprd_usb_f_serial(E) sprd_u_serial(E) sblock_bridge(E) sbuf_bridge(E) slog_bridge(E) sprd_iq(E) usb_f_vser(E) sprd_cp_dump(E) sprd_modem_loader(E) seth(E) sipx(E) spool(E) spipe(E) sprd_sipc_virt_bus(E) sensorhub(E) sipc_core(E) sprd_pdbg(E) unisoc_mailbox(E) sprd_power_manager(E) vibrator_drv(E) sprd_pmic_syscon(E) shutdown_detect(E) sdhci_sprd(E) mmc_hsq(E) mmc_swcq(E) gpio_pmic_eic_sprd(E) gpio_sprd(E) gpio_eic_sprd(E) sprd_cpufreq_v2(E) sprd_thermal_ctl(E) sprd_soc_thm(E) sprd_thermal(E) trusty_tui(E) sprd_7sreset(E) i2c_sprd_hw_v2(E) i2c_sprd(E) ufs_sprd(E) miev(CE) rpmb(E) nvmem_sprd_efuse(E) nvmem_sprd_cache_efuse(E) sprd_lookat(E) nvmem_sc27xx_efuse(E) sprd_hwspinlock(E) sprd_soc_id(E) sc2730_regulator(E) rtc_sc27xx(E) sprd_pmic_spi(E) sprd_pmic_dump(E) spi_sprd_adi(E) unisoc_sched(E) iolimit(E) ums9230_clk(E) clk_sprd(E) sprd_time_sync_cp(E) sprd_time_sync(E) sprd_systimer(E) sprd_sip_svc(E) sprd_wdt_fiq(E) regmap_hook(E) timer_sprd(E) native_hang_monitor(E) sysdump(E) printk_cpuid(E) CPU: 6 PID: 8762 Comm: externalstorage Tainted: G WC OE 5.15.178 #1 Hardware name: Spreadtrum UMS9230 1H10 SoC (DT) pstate: a0400005 (NzCv daif +PAN -UAO -TCO -DIT -SSBS BTYPE=--) pc : __kmalloc+0x1e8/0x554 lr : __kmalloc+0xac/0x554 sp : ffffffc01522b9a0 x29: ffffffc01522b9c0 x28: ffffffc00a82b000 x27: ffffffffffffffff x26: ffffff80fe24266c x25: 0000000000000000 x24: ffffff808102b600 x23: 2931b4f7a36172c1 x22: ffffffc0085ae1d0 x21: ffffff8080002300 x20: 000000000000003b x19: 0000000000000dc0 x18: ffffffc0122a5070 x17: 00000000d67b9d6c x16: 00000000d47e51ba x15: 00000000fb8680e1 x14: 0000000060f81bf5 x13: 000000002c39d2b1 x12: 69e51275239e8d3e x11: ffffffc009fc0b70 x10: ffffff808102b610 x9 : 0031b4f7a3617301 x8 : 0000000000ed83e6 x7 : 0000000000001000 x6 : ffffff80fe242000 x5 : ffffff80fd18f820 x4 : ffffffc01522ba88 x3 : 0000000000ed8406 x2 : 000000008d2bd93a x1 : 0000000000000dc0 x0 : 0000000000000000 Call trace: __kmalloc+0x1e8/0x554 ext4_htree_store_dirent+0x44/0x128 htree_dirblock_to_tree+0x13c/0x368 ext4_htree_fill_tree+0x158/0x43c ext4_dx_readdir+0x300/0x3c8 ext4_readdir+0x67c/0x78c iterate_dir+0xfc/0x204 __do_sys_getdents64+0x60/0x24c __arm64_sys_getdents64+0x24/0x34 invoke_syscall+0x60/0x150 el0_svc_common.llvm.4276087486143601463+0xb8/0xf8 do_el0_svc+0x28/0x98 el0_svc+0x24/0x84 el0t_64_sync_handler+0x88/0xec el0t_64_sync+0x1b8/0x1bc Code: f9406eac 91008103 8b8a2129 9100430a (f940012b)
最新发布
11-26
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

程序员Android

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值