1.å¦ä½å¨Zynq-7000ä¸ç§åPL Image
2.å¦ä½å©ç¨Zynq-7000çPLåPSè¿è¡äº¤äº
3.osl什么意思
å¦ä½å¨Zynq-7000ä¸ç§åPL Image
å¨Zynq-ä¸ç¼ç¨PL大è´æ3ç§æ¹æ³ï¼
1. ç¨FSBLï¼å°bitstreaméæå°boot.binä¸
2. ç¨U-BOOTå½ä»¤
3. å¨Linuxä¸ç¨xdevcfg驱å¨ã
æ¥éª¤ï¼
1. å»æbitstreamçæ件头
ç¨FSBLç§åPL Images没æä»ä¹å¥½è¯´çï¼ç¨Xilinx SDKçCreate Boot Imageå·¥å ·å³å¯å®æï¼ä¸åèµè¿°ãç¨å两ç§æ¹æ³éè¦æbitstreamæ件çæ件头ç¨bootgenå·¥å ·å»æã
ä¸ä¸ªå ¸åçbifæ件å¦ä¸æ示ï¼
the_ROM_image:
{
[bootloader]<fsbl_name>.elf
<pl_bitstream_name>.bit
<u-boot_name>.elf
}
bifæ件å¯ä»¥ç¨ææ¬ç¼è¾å¨åï¼ä¹å¯ä»¥ç¨Xilinx SDKçCreate Boot Imageå·¥å ·çæãç¶åå¨å½ä»¤è¡ä¸ç¨ä»¥ä¸å½ä»¤å³å¯å»æbitstreamæ件çæ件头ã
bootgen -image <bootimage>.bif -split bin -o i BOOT.BIN
"-splitâåæ°å¯ä»¥çæ以ä¸æ件ï¼
<pl_bitstream_name>.bit.bin
2. å¨U-BOOTä¸ç§åPL Image
å½ä»¤âfpga loadâåâfpga loadbâé½å¯ä»¥ãåºå«æ¯åä¸ä¸ªå½ä»¤æ¥åå»æäºæ件头çbitstreamæ件ï¼åä¸ä¸ªå½ä»¤æ¥åå«ææ件头çbitstreamæ件ã
å¨OSL .2ä¸ï¼ç¼ºçç¼è¯å°±å¯ä»¥å®æ´æ¯æåå ¥PL Imageçåè½ãä½æ¯å¨Petalinux .ä¸ï¼å°½ç®¡å¯ä»¥å¨U-BOOTä¸çå°å½ä»¤âfpgaâï¼è¿éè¦å¨æ件
<PROJ>/subsystems/linux/configs/u-boot/platform-top.h ä¸å¢å 以ä¸å 容åéæ°ç¼è¯æå¯ä»¥æ¯æå ·ä½çåè½ã
/* Enable the PL to be downloaded */
#define CONFIG_FPGA
#define CONFIG_FPGA_XILINX
#define CONFIG_FPGA_ZYNQPL
#define CONFIG_CMD_FPGA
#define CONFIG_FPGA_LOADFS
å¨OSL .2 U-BOOTä¸ï¼å ·ä½çåè½æ¯å¨zynqpl.cçzynq_load()ä¸å®ç°çã
3. å¨Linuxä¸ç§åPL Image
OSL Linux .2.ä¸å·²ç»å«æxdevcfg驱å¨äºï¼ä¹åå°±æï¼ä¸è¿æ¬ææ¯å¨è¿ä¸ªçæ¬ä¸éªè¯çï¼ï¼ç´æ¥ç¨ä»¥ä¸å½ä»¤å°±å¯ä»¥å®æPL Imageåå ¥ã
cat <path_to_storage_media>/<pl_bitstream_name>.bit.bin > /dev/xdevcfg
Linux驱å¨çæºä»£ç å¨xilinx_devcfg.cä¸ãå 为驱å¨çç¼å·æ¯éè¿alloc_chrdev_region()å¨æåé çï¼æ以ä¸éè¦æå·¥ç¨mknodå½ä»¤æå¨å»ºç«è®¾å¤èç¹ã
å¨Linux驱å¨ä¸ï¼æ¯æ¬¡å¾DevCfgä¸åå ¥åèï¼ç´å°å ¨é¨åå®ã
4. å¨ç¨æ·ç¨åºä¸ç§åPL Image
ç®å没æç°æçæºç æ¥å®æè¿ä¸ªåè½ï¼ä¸è¿å¯ä»¥ç¨mmap()æDevCfgçå¯åå¨æ å°å°ç¨æ·ç¨åºçèå°åä¸ï¼ç¶ååèä¸äºç°æç软件代ç æ¥å®æè¿ä¸ªåè½ï¼
* FSBLä¸çpcap.c
* U-BOOTä¸çzynqpl.c
* Linuxä¸çxilinx_devcfg.c
* Xilinx SDKä¸çä¾åãä¾åä½äºä»¥ä¸ä½ç½®ï¼éSDKççæ¬ä¼æååã
C:\Xilinx\SDK\.1\data\embeddedsw\XilinxProcessorIPLib\drivers\devcfg_v3_0\examples\index.html
å°ç»ï¼
DevCfgå¤è®¾å é¨æèªå·±çDMAï¼åªéè¦ç®åçé ç½®PL Imageçåºå°ååé¿åº¦å°DevCfgå¯åå¨ï¼å°±å¯ä»¥å®æZynq- PL Imageçå è½½ãXilinxå·²ç»æä¾äºçµæ´»ç解å³æ¹æ¡ï¼å¦æå¼åè è¦æè¿ä¸ªåè½éæå¨èªå·±çåºç¨ç¨åºä¸ï¼ä¹æå¾å¤ç代ç å¯ä»¥åèï¼å¹¶ä¸æ¯å¾å°é¾çä»»å¡ã
å¦ä½å©ç¨Zynq-çPLåPSè¿è¡äº¤äº
å¨Zynq-ä¸ç¼ç¨PL大è´æ3ç§æ¹æ³ï¼
1. ç¨FSBLï¼å°bitstreaméæå°boot.binä¸
2. ç¨U-BOOTå½ä»¤
3. å¨Linuxä¸ç¨xdevcfg驱å¨ã
æ¥éª¤ï¼
1. å»æbitstreamçæ件头
ç¨FSBLç§åPL Images没æä»ä¹å¥½è¯´çï¼ç¨Xilinx SDKçCreate Boot Imageå·¥å ·å³å¯å®æï¼ä¸åèµè¿°ãç¨å两ç§æ¹æ³éè¦æbitstreamæ件çæ件头ç¨bootgenå·¥å ·å»æã
ä¸ä¸ªå ¸åçbifæ件å¦ä¸æ示ï¼
the_ROM_image:
{
[bootloader]<fsbl_name>.elf
<pl_bitstream_name>.bit
<u-boot_name>.elf
}
bifæ件å¯ä»¥ç¨ææ¬ç¼è¾å¨åï¼ä¹å¯ä»¥ç¨Xilinx SDKçCreate Boot Imageå·¥å ·çæãç¶åå¨å½ä»¤è¡ä¸ç¨ä»¥ä¸å½ä»¤å³å¯å»æbitstreamæ件çæ件头ã
bootgen -image <bootimage>.bif -split bin -o i BOOT.BIN
"-splitâåæ°å¯ä»¥çæ以ä¸æ件ï¼
<pl_bitstream_name>.bit.bin
2. å¨U-BOOTä¸ç§åPL Image
å½ä»¤âfpga loadâåâfpga loadbâé½å¯ä»¥ãåºå«æ¯åä¸ä¸ªå½ä»¤æ¥åå»æäºæ件头çbitstreamæ件ï¼åä¸ä¸ªå½ä»¤æ¥åå«ææ件头çbitstreamæ件ã
å¨OSL .2ä¸ï¼ç¼ºçç¼è¯å°±å¯ä»¥å®æ´æ¯æåå ¥PL Imageçåè½ãä½æ¯å¨Petalinux .ä¸ï¼å°½ç®¡å¯ä»¥å¨U-BOOTä¸çå°å½ä»¤âfpgaâï¼è¿éè¦å¨æ件
<PROJ>/subsystems/linux/configs/u-boot/platform-top.h ä¸å¢å 以ä¸å 容åéæ°ç¼è¯æå¯ä»¥æ¯æå ·ä½çåè½ã
/* Enable the PL to be downloaded */
#define CONFIG_FPGA
#define CONFIG_FPGA_XILINX
#define CONFIG_FPGA_ZYNQPL
#define CONFIG_CMD_FPGA
#define CONFIG_FPGA_LOADFS
å¨OSL .2 U-BOOTä¸ï¼å ·ä½çåè½æ¯å¨zynqpl.cçzynq_load()ä¸å®ç°çã
3. å¨Linuxä¸ç§åPL Image
OSL Linux .2.ä¸å·²ç»å«æxdevcfg驱å¨äºï¼ä¹åå°±æï¼ä¸è¿æ¬ææ¯å¨è¿ä¸ªçæ¬ä¸éªè¯çï¼ï¼ç´æ¥ç¨ä»¥ä¸å½ä»¤å°±å¯ä»¥å®æPL Imageåå ¥ã
cat <path_to_storage_media>/<pl_bitstream_name>.bit.bin > /dev/xdevcfg
Linux驱å¨çæºä»£ç å¨xilinx_devcfg.cä¸ãå 为驱å¨çç¼å·æ¯éè¿alloc_chrdev_region()å¨æåé çï¼æ以ä¸éè¦æå·¥ç¨mknodå½ä»¤æå¨å»ºç«è®¾å¤èç¹ã
å¨Linux驱å¨ä¸ï¼æ¯æ¬¡å¾DevCfgä¸åå ¥åèï¼ç´å°å ¨é¨åå®ã
4. å¨ç¨æ·ç¨åºä¸ç§åPL Image
ç®å没æç°æçæºç æ¥å®æè¿ä¸ªåè½ï¼ä¸è¿å¯ä»¥ç¨mmap()æDevCfgçå¯åå¨æ å°å°ç¨æ·ç¨åºçèå°åä¸ï¼ç¶ååèä¸äºç°æç软件代ç æ¥å®æè¿ä¸ªåè½ï¼
* FSBLä¸çpcap.c
* U-BOOTä¸çzynqpl.c
* Linuxä¸çxilinx_devcfg.c
* Xilinx SDKä¸çä¾åãä¾åä½äºä»¥ä¸ä½ç½®ï¼éSDKççæ¬ä¼æååã
C:\Xilinx\SDK\.1\data\embeddedsw\XilinxProcessorIPLib\drivers\devcfg_v3_0\examples\index.html
å°ç»ï¼
DevCfgå¤è®¾å é¨æèªå·±çDMAï¼åªéè¦ç®åçé ç½®PL Imageçåºå°ååé¿åº¦å°DevCfgå¯åå¨ï¼å°±å¯ä»¥å®æZynq- PL Imageçå è½½ãXilinxå·²ç»æä¾äºçµæ´»ç解å³æ¹æ¡ï¼å¦æå¼åè è¦æè¿ä¸ªåè½éæå¨èªå·±çåºç¨ç¨åºä¸ï¼ä¹æå¾å¤ç代ç å¯ä»¥åèï¼å¹¶ä¸æ¯å¾å°é¾çä»»å¡ã
osl什么意思
OSL是码分Open Source License的缩写,意为开源许可证。码分
开源许可证是码分一种法律文件,用于明确软件或其他开源项目的码分使用、分发和修改等方面的码分ssh源码升级权利和义务。它旨在确保开源项目的码分练手的漏洞源码自由使用和持续发展,同时也保护开发者和贡献者的码分权益。
开源许可证通常包含一系列条款和条件,码分这些条款和条件规定了如何使用、码分复制、码分修改、码分分发和发布开源项目。码分例如,码分think php后台源码某些开源许可证可能要求用户在修改或分发项目时保留原始版权声明,码分或者要求用户在分发项目时提供源代码。码分这些要求确保了开源项目的持续可用性和可维护性,同时也鼓励了开发者之间的源码不全部开放合作和共享。
常见的开源许可证包括MIT许可证、Apache许可证、GNU通用公共许可证(GPL)等。这些许可证各有特点,{ ffff00}源码适用于不同的开源项目和场景。例如,MIT许可证较为宽松,允许用户自由使用、修改和分发项目,而不需要承担任何责任;而GPL许可证则更加严格,要求任何使用或基于该项目开发的软件都必须开源,并遵循相同的许可证要求。
总之,开源许可证是开源项目的重要组成部分,它确保了开源项目的自由使用和持续发展,同时也保护了开发者和贡献者的权益。在选择和使用开源许可证时,需要仔细了解其条款和条件,以确保项目符合自己的需求和期望。