# zephyr_pfr_tpm **Repository Path**: linkedsemi/zephyr_pfr_tpm ## Basic Information - **Project Name**: zephyr_pfr_tpm - **Description**: No description available - **Primary Language**: C - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-08-25 - **Last Updated**: 2026-08-25 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # pfr and tpm module - [pfr and tpm module](#pfr-and-tpm-module) - [usage](#usage) - [Zephyr BSP](#zephyr-bsp) - [spid(tpm spi slave)](#spidtpm-spi-slave) - [i2c filter](#i2c-filter) - [spi filter(spi monitor)](#spi-filterspi-monitor) ## usage 1. git clone project with name `pfr_tpm` ``` cd /data/work/modules/lib/ git clone https://github.com/linkedsemi/zephyr_pfr_tpm.git pfr_tpm ``` 2. modify zephyr/west.yml ``` htliu@sr:zephyr$ git diff west.yml diff --git a/west.yml b/west.yml index 7b26860a91c..c1be0ddb8fd 100644 --- a/west.yml +++ b/west.yml @@ -271,6 +271,8 @@ manifest: revision: v1.4.18-stable-fix-build-error url: https://github.com/linkedsemi/wolfssh.git path: modules/lib/wolfssh + - name: pfr_tpm + path: modules/lib/pfr_tpm - name: hostap path: modules/lib/hostap revision: 0f7b166487b1ac08e1c6c492383f5c103320b2be ``` 3. build ``` cd /data/work west build -b lsqsh_evb@2os/lsqsh/cpu1 -p always modules/lib/pfr_tpm/samples/spid ``` ## Zephyr BSP #### spid(tpm spi slave) - driver | item | content | description | |---------------|-------------------------------------------------------|-------------| | interface | modules/lib/pfr_tpm/drivers/spid/spid_linkedsemi.h | | | source file | modules/lib/pfr_tpm/drivers/spid/spid_linkedsemi.c | | | Kconfig file | modules/lib/pfr_tpm/zephyr/Kconfig.spid | | | configuration | CONFIG_SPID_LINKEDSEMI | | | yaml file | modules/lib/pfr_tpm/drivers/spid/linkedsemi,spid.yaml | | | sample | modules/lib/pfr_tpm/samples/spid | | | | | | - test plan ``` 启动slave程序等待master下发指令 ``` - board lsqsh_evb_cpu1: security zephyr lsqsh_evb_cpu2: application zephyr - build sample ``` west build -b lsqsh_evb@2os/lsqsh/cpu1 -p always modules/lib/pfr_tpm/samples/spid/ ``` #### i2c filter - driver | item | content | description | |---------------|----------------------------------------------------------------|-----------------------------------------------| | interface | modules/lib/pfr_tpm/drivers/pfr/i2c/i2c_filter.h | | | source file | modules/lib/pfr_tpm/drivers/pfr/i2c/i2c_filter.c | | | Kconfig file | modules/lib/pfr_tpm/zephyr/Kconfig.i2cfilter | | | configuration | CONFIG_I2C_FILTER_LINKEDSEMI | | | yaml file | modules/lib/pfr_tpm/drivers/pfr/i2c/linkedsemi,i2c-filter.yaml | | | sample 1 | modules/lib/pfr_tpm/samples/i2c_filter | 仅开启i2c filter | | sample 2 | modules/lib/pfr_tpm/samples/i2c_filter_loopback | i2c master + i2c filter + i2c slave的环回测试 | | | | | - test plan 1 modules/lib/pfr_tpm/samples/i2c_filter ``` 启动slave程序等待master下发指令 ``` - test plan 2 modules/lib/pfr_tpm/samples/i2c_filter_loopback ``` i2c master对i2c filter发送波形,i2c slave负责ack让master流程走下去,观察波形和i2c filter上报中断 ``` - board lsqsh_evb_cpu1: security zephyr lsqsh_evb_cpu2: application zephyr - build sample 1 ``` west build -b lsqsh_evb@2os/lsqsh/cpu1 -p always modules/lib/pfr_tpm/samples/i2c_filter/ ``` - build sample 2 ``` west build -b lsqsh_evb@2os/lsqsh/cpu1 -p always modules/lib/pfr_tpm/samples/i2c_filter_loopback/ ``` #### spi filter(spi monitor) - driver | item | content | description | |-----------------|----------------------------------------------------------------|-----------------------------------------------| | interface | modules/lib/pfr_tpm/drivers/pfr/spi/spi_filter.h | | | source file 1 | modules/lib/pfr_tpm/drivers/pfr/spi/spi_filter.c | | | source file 2 | modules/lib/pfr_tpm/drivers/pfr/spi/spi_filter_shell.c | | | Kconfig file | modules/lib/pfr_tpm/zephyr/Kconfig.spifilter | | | configuration 1 | CONFIG_SPI_FILTER_LINKEDSEMI | | | configuration 2 | CONFIG_SPI_FILTER_LINKEDSEMI_SHELL | | | yaml file | modules/lib/pfr_tpm/drivers/pfr/spi/linkedsemi,spi-filter.yaml | | | sample 1 | modules/lib/pfr_tpm/samples/spi_filter | 仅开启spi filter | | sample 2 | modules/lib/pfr_tpm/samples/spi_filter_with_master | spi master + spi filter + spi slave的环回测试 | | | | | - test plan 1 modules/lib/pfr_tpm/samples/spi_filter ``` 启动slave程序等待master下发指令 ``` - test plan 2 modules/lib/pfr_tpm/samples/spi_filter_with_master ``` spi master对spi filter发送波形,观察波形和spi filter上报中断 ``` - ip lock/unlock ``` spif_reg_lock() ``` ``` spif_reg_unlock() ``` - dump command table ``` spif_dump_cmd_table() ``` - dump read/write address table ``` spif_dump_rw_addr_privilege_table() ``` - dump bitmap log ``` spif_dump_cmd_bitmap_log() ``` - write | | spi | qpi | |-|-|-| | cmd only | `test_general_cmd()`
(except ENQPI) | `test_general_cmd_qpi()` {
test_enqpi()
test_general_cmd_qpi_main()
test_exqpi()
}
(except EXQPI) | | cmd + 3byte single line addr
`CMD_PAGE_PROGRAM` `02h` | `test_w_spicmd_saddr3b()`
(except EN4B) | | cmd + 4byte single line addr
`CMD_4BYTE_PAGE_PROGRAM` `12h` | `test_w_spicmd_saddr4b()` {
test_w_spi_en4b()
test_w_spicmd_saddr4b_main()
test_w_spi_ex4b()
}
(except EX4B) | | cmd + 3byte dual line addr | no write cmd support | cmd + 4byte dual line addr | no write cmd support | cmd + 3byte quad line addr
`CMD_PAGE_PROGRAM_QUAD_ADDRESS_QUAD_DATA` `38h` | `test_w_spicmd_qaddr3b()`
(except EN4B) | `test_w_qpi_3b` {
test_enqpi()
test_w_qpi_3b_main()
test_exqpi()
}
(except EN4B) | | cmd + 4byte quad line addr
`CMD_4BYTE_PAGE_PROGRAM_QUAD_ADDRESS_QUAD_DATA` `3eh` | `test_w_spicmd_qaddr4b()` {
test_w_spi_en4b()
test_w_spicmd_qaddr4b_main()
test_w_spi_ex4b()
}
(except EX4B) | `test_w_qpi_4b()` {
test_enqpi()
test_w_qpi_en4b()
test_w_qpi_4b_main()
test_w_qpi_ex4b()
test_exqpi()
}
(except EX4B) | | - read | | spi | qpi | |-|-|-| | cmd only(like write) | `test_general_cmd()`
(except ENQPI) | `test_general_cmd_qpi()` {
test_enqpi()
test_general_cmd_qpi_main()
test_exqpi()
}
(except EXQPI) | | cmd + 3byte single line addr
`CMD_FAST_READ` `0bh` | `test_r_spicmd_saddr3b()`
(except EN4B) | | cmd + 4byte single line addr
`CMD_4BYTE_FAST_READ` `0ch` | `test_r_spicmd_saddr4b()` {
test_r_spi_en4b()
test_r_spicmd_saddr4b_main()
test_r_spi_ex4b()
}
(except EX4B) | | cmd + 3byte dual line addr
`CMD_READ_DUAL_ADDR_DUAL_DATA` `bbh` | `test_r_spicmd_daddr3b()`
(except EN4B) | | cmd + 4byte dual line addr
`CMD_4BYTE_READ_DUAL_ADDR_DUAL_DATA` `bch` | `test_r_spicmd_daddr4b()` {
test_r_spi_en4b()
test_r_spicmd_daddr4b_main()
test_r_spi_ex4b()
}
(except EX4B) | | cmd + 3byte quad line addr
`CMD_READ_QUAD_ADDRESS_QUAD_DATA` `ebh` | `test_r_spicmd_qaddr3b()`
(except EN4B) | `test_r_qpi_3b` {
test_enqpi()
test_r_qpi_3b_main()
test_exqpi()
}
(except EN4B) | | cmd + 4byte quad line addr
`CMD_4BYTE_READ_QUAD_ADDRESS_QUAD_DATA` `ech` | `test_r_spicmd_qaddr4b()` {
test_r_spi_en4b()
test_r_spicmd_qaddr4b_main()
test_r_spi_ex4b()
}
(except EX4B) | `test_r_qpi_4b()` {
test_enqpi()
test_r_qpi_en4b()
test_r_qpi_4b_main()
test_r_qpi_ex4b()
test_exqpi()
}
(except EX4B) | | - dma log ``` spif_dma_config() ``` - dump dma log ``` spif_log_dma_buf() ``` - sck check ``` spif_clk_check_config() ``` - target address detect ``` spif_target_addr_config() ``` - board lsqsh_evb_cpu1: security zephyr lsqsh_evb_cpu2: application zephyr - build sample 1 ``` west build -b lsqsh_evb@2os/lsqsh/cpu1 -p always modules/lib/pfr_tpm/samples/spi_filter/ ``` - build sample 2 ``` west build -b lsqsh_evb@2os/lsqsh/cpu1 -p always modules/lib/pfr_tpm/samples/spi_filter_with_master/ ```