LS1088ardb eMMC enabling

キャンセル
次の結果を表示 
表示  限定  | 次の代わりに検索 
もしかして: 

LS1088ardb eMMC enabling

ソリューションへジャンプ
1,559件の閲覧回数
zeroqruel
Contributor III

Hello experts,

I have a custom board with ls1088ardb processor.  The only difference from the reference design is that I have 128GB eMMC storage instead of 4GB eMMC. I successfully boot u-boot from SD Card or QSPI. After the kernel is up, I want to use the eMMC volume as storage/database. But the eMMC volume is not loaded while loading the kernel. 

 

The error I get is: /dev/mmcblk0p1: Can't open blockdev 

Do I need to add/edit anything in dts to use eMMC volume as storage/database in userspace? Or do I need to do anything in rcw files? 

My dts is like;

&esdhc {
status = "okay";
non-removable;
compatible = "fsl,ls1088a-esdhc", "fsl,esdhc";
bus-width = <4>;
};

ラベル(1)
タグ(1)
0 件の賞賛
返信
1 解決策
1,383件の閲覧回数
zeroqruel
Contributor III

I solved the problem. In the RCW file, it was necessary to activate the function for emmc from the SPI_PCS pin settings.

zeroqruel_0-1747977140470.png

 

 

SPI_PCS_BASE=2

 

元の投稿で解決策を見る

0 件の賞賛
返信
4 返答(返信)
1,418件の閲覧回数
zeroqruel
Contributor III

I have been waiting for an answer for a long time. Can you support me? It's urgent.

@Oswalag  or @yipingwang 

0 件の賞賛
返信
1,493件の閲覧回数
Oswalag
NXP TechSupport
NXP TechSupport

Hello,

If you take a look on the LS1088ARDB, there is a mux to select if the SDHC interface is active with the SD card OR the emmc, but you can't use both at the same time due to voltage and pins restrictions.

Oswalag_0-1747245700482.png

Please refer to the description in Page 46 of the RM: Some special features of the SDHC interface are:

Regards.

0 件の賞賛
返信
1,473件の閲覧回数
zeroqruel
Contributor III

Hello @Oswalag 

Thank you for reply. I set u-boot to open via SD or NOR(QSPI) according to rcw configuration with switch. When u-boot opens via NOR, eMMC mux is activated by CPLD. I have successfully activated eMMC but it is started as 4 buses every time. I get pinstate error while opening u-boot. 

MMC:   
esdhc_change_pinstate 0 error                                                           
esdhc_set_timing error -22 

=> mmcinfo                                                                                     
esdhc_change_pinstate 4 error                                                                  
esdhc_set_timing error -22                                                                     
Device: FSL_SDHC                                                                               
Manufacturer ID: 13                                                                            
OEM: 14e                                                                                       
Name: 0IM20                                                                                    
Bus Speed: 52000000                                                                            
Mode : MMC High Speed (52MHz)                                                                  
Rd Block Len: 512                                                                              
MMC version 5.1                                                                                
High Capacity: Yes                                                                             
Capacity: 118.6 GiB                                                                            
Bus Width: 4-bit                                                                               
Erase Group Size: 512 KiB                                                                      
HC WP Group Size: 32 MiB                                                                       
User Capacity: 118.6 GiB WRREL                                                                 
Boot Capacity: 31.5 MiB ENH                                                                    
RPMB Capacity: 4 MiB ENH 

 

After opening the kernel I get the error "bus width 8 failed".

dmesg | grep mmc                                                                
[    1.496588] mmc0: SDHCI controller on 2140000.esdhc [2140000.esdhc] using ADMA 64-bit       
[    2.912927] mmc0: switch to bus width 8 failed                                              
[    2.924054] mmc0: new high speed MMC card at address 0001                                   
[    2.925439] mmcblk0: mmc0:0001 0IM20G 119 GiB                                               
[    2.926164] mmcblk0boot0: mmc0:0001 0IM20G partition 1 31.5 MiB                             
[    2.926869] mmcblk0boot1: mmc0:0001 0IM20G partition 2 31.5 MiB                             
[    2.927160] mmcblk0rpmb: mmc0:0001 0IM20G partition 3 4.00 MiB, chardev (508:0)             
[    2.930264]  mmcblk0: p1



/sys/kernel/debug/mmc0# cat ios                                                                                         
clock:          52000000 Hz                                                                                                         
actual clock:   50000000 Hz                                                                                                         
vdd:            21 (3.3 ~ 3.4 V)                                                                                                    
bus mode:       2 (push-pull)                                                                                                       
chip select:    0 (don't care)                                                                                                      
power mode:     2 (on)                                                                                                              
bus width:      2 (4 bits)                                                                                                          
timing spec:    1 (mmc high-speed)                                                                                                  
signal voltage: 0 (3.30 V)                                                                                                          
driver type:    0 (driver type B) 

 

My definitions for emmc in dts and dtsi files are as follows;

dts;
&esdhc {
	status = "okay";
	compatible = "fsl,ls1088a-esdhc", "fsl,esdhc";
	non-removable;
	bus-width = <8>;
};

dtsi; (changed bus width to 8)
		esdhc: esdhc@2140000 {
			compatible = "fsl,ls1088a-esdhc", "fsl,esdhc";
			reg = <0x0 0x2140000 0x0 0x10000>;
			interrupts = <0 28 0x4>; /* Level high type */
			clock-frequency = <0>;
			voltage-ranges = <1800 1800 3300 3300>;
			sdhci,auto-cmd12;
			little-endian;
			bus-width = <8>;
			status = "okay";
		};


I want to run emmc as 8 bus width. I have seen parameters like pinctrl-names, pinctrl-0, vmmc-supply, mmc-hs200-1_8v but I always got a compilation error in a few dts attempts. Especially when I defined "mmc-hs200-1_8v", I saw that emmc was not loaded in the kernel at all and I got an error. Are there any parameters that I definitely need to add among these parameters? Can you give an example? What is the reason why emmc does not work with 8 bus width? Are there any parts that you see as missing or incorrect? 

Note: I added the picture of the processor's SD, eMMC and CPLD connections.

0 件の賞賛
返信
1,384件の閲覧回数
zeroqruel
Contributor III

I solved the problem. In the RCW file, it was necessary to activate the function for emmc from the SPI_PCS pin settings.

zeroqruel_0-1747977140470.png

 

 

SPI_PCS_BASE=2

 
0 件の賞賛
返信