日B视频 亚洲,啪啪啪网站一区二区,91色情精品久久,日日噜狠狠色综合久,超碰人妻少妇97在线,999青青视频,亚洲一区二卡,让本一区二区视频,日韩网站推荐

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

ImageKnife簡(jiǎn)介

OpenAtom OpenHarmony ? 來(lái)源:OpenAtom OpenHarmony ? 作者:OpenAtom OpenHarmony ? 2022-06-17 11:53 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

圖片是 UI 界面的重要元素之一,圖片加載速度及效果直接影響應(yīng)用體驗(yàn)。ArkUI 開(kāi)發(fā)框架提供了豐富的圖像處理能力,如圖像解碼、圖像編碼、圖像編輯及基本的位圖操作等,滿(mǎn)足了開(kāi)發(fā)者日常開(kāi)發(fā)所需。但隨著產(chǎn)品需求的日益增長(zhǎng),基本的圖像處理能力已不能勝任某些比較復(fù)雜的應(yīng)用場(chǎng)景,如無(wú)法直接獲取緩存圖片、無(wú)法配置占位圖、無(wú)法進(jìn)行自定義 PixelMap 圖片變換等。為增強(qiáng) ArkUI 開(kāi)發(fā)框架的圖像處理能力,ImageKnife 組件應(yīng)運(yùn)而生,本期我們將為大家?guī)?lái) ImageKnife 的介紹。

一、ImageKnife簡(jiǎn)介

ImageKnife 是一個(gè)參考 Glide 框架進(jìn)行設(shè)計(jì),并基于 eTS 語(yǔ)言實(shí)現(xiàn)的圖片處理組件,讓開(kāi)發(fā)者能輕松且高效地進(jìn)行圖片開(kāi)發(fā)。而 Glide 是一個(gè)快速高效的圖片加載庫(kù),它注重于平滑的滾動(dòng),提供了易用的 API,高性能、可擴(kuò)展的圖片解碼管道,以及自動(dòng)的資源池技術(shù)。

功能方面,ImageKnife 提供了自定義圖片變換、占位圖等圖片處理能力,幾乎滿(mǎn)足了開(kāi)發(fā)者進(jìn)行圖片處理的一切需求。性能方面,ImageKnife 采用 LRU 策略實(shí)現(xiàn)二級(jí)緩存,可靈活配置,有效減少內(nèi)存消耗,提升了應(yīng)用性能。使用方面,ImageKnife 封裝了一套完整的圖片加載流程,開(kāi)發(fā)者只需根據(jù) ImageKnifeOption 配置相關(guān)信息即可完成圖片的開(kāi)發(fā),降低了開(kāi)發(fā)難度,提升了開(kāi)發(fā)效率。如圖 1 所示,是 ImageKnife 加載圖片的整體流程。

503b9a54-d6ac-11ec-bce3-dac502259ad0.jpg

圖1 ImageKnife加載圖片整體流程

二、ImageKnife實(shí)現(xiàn)原理

下面我們將為大家介紹 ImageKnife 加載圖片過(guò)程中每個(gè)環(huán)節(jié)的實(shí)現(xiàn)原理,讓大家更深刻地認(rèn)識(shí) ImageKnife 組件。圖 2 是 ImageKnife 加載圖片的時(shí)序圖:

504d2bc0-d6ac-11ec-bce3-dac502259ad0.jpg

圖2 ImageKnife加載圖片的時(shí)序圖

2.1 用戶(hù)配置信息

在加載圖片前,用戶(hù)需根據(jù)自身需求配置相應(yīng)的參數(shù),包括圖片路徑、圖片大小、占位圖及緩存策略等。ImageKnife 提供了 RequestOption 類(lèi),用于封裝用戶(hù)配置信息的接口,如圖 3 所示列舉了部分接口供大家參考:

50a4202e-d6ac-11ec-bce3-dac502259ad0.jpg

圖3 用戶(hù)配置參數(shù)

通過(guò) imageKnifeExecute() 方法獲取用戶(hù)配置信息,然后執(zhí)行 ImageKnife.call(request),正式啟動(dòng)圖片加載任務(wù)。相關(guān)實(shí)現(xiàn)代碼如下:


imageKnifeExecute() {  // 首先需要確保獲取ImageKnife單例對(duì)象  if(ImageKnife){  }else{    ImageKnife = globalThis.exports.default.data.imageKnife;  }  // 生成配置信息requestOption  let request = new RequestOption();  // 配置必要信息和回調(diào)  this.configNecessary(request);  // 配置緩存相關(guān)信息     this.configCacheStrategy(request);  // 配置顯示信息和回調(diào)   this.configDisplay(request);  // 啟動(dòng)ImageKnife執(zhí)行請(qǐng)求  ImageKnife.call(request);}

2.2 加載圖片

加載圖片過(guò)程是 ImageKnife 組件的核心部分,如圖 4 所示,包含占位圖填充、緩存實(shí)現(xiàn)及圖片解碼三個(gè)環(huán)節(jié)。下面我們將為大家分別介紹每個(gè)環(huán)節(jié)的實(shí)現(xiàn)。

50df29b2-d6ac-11ec-bce3-dac502259ad0.jpg

圖4 圖片加載過(guò)程

2.2.1 占位圖填充

占位圖就是圖片加載過(guò)程中頁(yè)面上的過(guò)渡效果,通常表現(xiàn)形式是在頁(yè)面上待加載區(qū)域填充灰色的占位圖,可以使得頁(yè)面框架不會(huì)因?yàn)榧虞d失敗而變形。ImageKnife 提供了占位圖功能,開(kāi)發(fā)者可在 RequestOption 中配置是否啟動(dòng)占位圖任務(wù)。如圖 5 所示是占位圖工作流程,執(zhí)行圖片加載任務(wù)后,占位圖會(huì)填充加載頁(yè)面。如果圖片解析成功則將頁(yè)面上填充的占位圖替換為待加載的圖片。如果圖片解析失敗,則將頁(yè)面上填充的占位圖替換為“圖片解析失敗占位圖”。

50f9905e-d6ac-11ec-bce3-dac502259ad0.jpg

圖5 占位圖工作流程

相關(guān)實(shí)現(xiàn)代碼如下:


// 占位圖解析成功placeholderOnComplete(imageKnifeData: ImageKnifeData) {// 主圖未加載成功,并且未加載失敗  顯示占位圖  主圖加載成功或者加載失敗后=>不展示占位圖  if (!this.loadMainReady && !this.loadErrorReady && !this.loadThumbnailReady) {        this.placeholderFunc(imageKnifeData)  }}// 加載失敗 占位圖解析成功errorholderOnComplete(imageKnifeData: ImageKnifeData) {  // 如果有錯(cuò)誤占位圖 先解析并保存在RequestOption中 等到加載失敗時(shí)候進(jìn)行調(diào)用  this.errorholderData = imageKnifeData;  if (this.loadErrorReady) {    this.errorholderFunc(imageKnifeData)}

2.2.2 緩存實(shí)現(xiàn)

緩存是圖片加載過(guò)程中最關(guān)鍵的環(huán)節(jié),緩存機(jī)制直接影響了圖片加載速度及圖片滾動(dòng)效果,開(kāi)發(fā)者可通過(guò)以下方法來(lái)靈活配置緩存策略。

5115f8b6-d6ac-11ec-bce3-dac502259ad0.jpg

圖6 緩存策略API

為了保障圖片的加載速度,ImageKnife 通過(guò)使用 Least Recently Used(最近最少使用)清空策略來(lái)實(shí)現(xiàn)內(nèi)存緩存及磁盤(pán)緩存。如圖 7 所示,在圖片加載過(guò)程中,CPU 會(huì)首先讀取內(nèi)存緩存中的數(shù)據(jù),如果讀取到圖片資源則直接顯示圖片,否則讀取磁盤(pán)緩存數(shù)據(jù)。如果在磁盤(pán)緩存上仍然沒(méi)有讀取到數(shù)據(jù),則可判定為該圖片為網(wǎng)絡(luò)圖片,這時(shí)需要將網(wǎng)絡(luò)圖片解碼后再進(jìn)行顯示(后面章節(jié)會(huì)詳細(xì)介紹),并將解碼后的圖片文件緩存至磁盤(pán)。

5164b046-d6ac-11ec-bce3-dac502259ad0.jpg

圖7 圖片緩存過(guò)程

下面我們將分別介紹兩種緩存機(jī)制的具體實(shí)現(xiàn)。

(1)內(nèi)存緩存

內(nèi)存緩存,就是指當(dāng)前程序運(yùn)行內(nèi)存分配的臨時(shí)存儲(chǔ)器,當(dāng)我們使用 ImageKnife 加載圖片時(shí),這張圖片會(huì)被緩存到內(nèi)存當(dāng)中,只要在它還沒(méi)從內(nèi)存中被清除之前,下次再加載這張圖片都會(huì)直接從內(nèi)存中讀取,而不用重新從網(wǎng)絡(luò)或硬盤(pán)上讀取,大幅度提升圖片的加載效率。ImageKnife 內(nèi)存緩存的實(shí)現(xiàn),需控制最大空間(maxsize),以及目前占用空間(size),相關(guān)實(shí)現(xiàn)代碼如下:


// 移除較少使用的緩存數(shù)據(jù)trimToSize(tempsize: number) {  while (true) {    if (tempsize < 0) {      this.map.clear()      this.size = 0      break    }    if (this.size <= tempsize || this.map.isEmpty()) {      break    }    var delkey = this.map.getFirstKey()    this.map.remove(delkey)    this.size--  }}
// 緩存數(shù)據(jù)最大值maxSize(): number{  return this.maxsize}
// 設(shè)置緩存數(shù)據(jù)量最大值resize(maxsize: number) {  if (maxsize < 0) {    throw new Error('maxsize <0 & maxsize invalid');  }  this.maxsize = maxsize  this.trimToSize(maxsize)}
// 清除緩存evicAll() {  this.trimToSize(-1)}

(2)磁盤(pán)緩存

默認(rèn)情況下,磁盤(pán)緩存的是解碼后的圖片文件,需防止應(yīng)用重復(fù)從網(wǎng)絡(luò)或其他地方下載和讀取數(shù)據(jù)。ImageKnife 磁盤(pán)緩存的實(shí)現(xiàn),主要依靠 journal 文件對(duì)緩存數(shù)據(jù)進(jìn)行保存,保證程序磁盤(pán)緩存內(nèi)容的持久化問(wèn)題。相關(guān)實(shí)現(xiàn)代碼:


//讀取journal文件的緩存數(shù)據(jù)readJournal(path: string) {  var fileReader = new FileReader(path)  var line: string = ''  while (!fileReader.isEnd()) {    line = fileReader.readLine()    line = line.replace('
', '').replace('
', '')    this.dealwithJournal(line)  }  this.fileUtils.deleteFile(this.journalPathTemp)  this.trimToSize()}
//根據(jù)LRU算法刪除多余緩存數(shù)據(jù)private trimToSize() {  while (this.size > this.maxSize) {    var tempkey: string = this.cacheMap.getFirstKey()    var fileSize = this.fileUtils.getFileSize(this.dirPath + tempkey)    if (fileSize > 0) {      this.size = this.size - fileSize    }    this.fileUtils.deleteFile(this.dirPath + tempkey)    this.cacheMap.remove(tempkey)    this.fileUtils.writeData(this.journalPath, 'remove ' + tempkey + '
')  }}
//清除所有disk緩存數(shù)據(jù)cleanCacheData() {  var length = this.cacheMap.size()  for (var index = 0; index < length; index++) {    this.fileUtils.deleteFile(this.dirPath + this.cacheMap[index])  }  this.fileUtils.deleteFile(this.journalPath)  this.cacheMap.clear()  this.size = 0}

2.2.3 圖片解碼

當(dāng)我們使用 ImageKnife 去加載一張圖片的時(shí)候,并不是將原始圖片直接顯示出來(lái),而是會(huì)進(jìn)行圖片解碼后再顯示到頁(yè)面。圖片解碼就是將不同格式的圖片(包括 JPEG、PNG、GIF、WebP、BMP)解碼成統(tǒng)一格式的 PixelMap 圖片文件。ImageKnife 的圖片解碼能力依賴(lài)的是 ArkUI 開(kāi)發(fā)框架提供的 ImageSource 解碼能力。通過(guò) import image from '@ohos.multimedia.image'導(dǎo)入 ArkUI 開(kāi)發(fā)框架的圖片能力,并調(diào)用 createImageSource() 方法獲取,實(shí)現(xiàn)代碼如下:


import image from '@ohos.multimedia.image'
export class TransformUtils {  static centerCrop(buf: ArrayBuffer, outWidth: number, outHeihgt: number,                    callback?: AsyncTransform>) {    // 創(chuàng)建媒體解碼imageSource    var imageSource = image.createImageSource(buf as any);    // 獲取圖片信息    imageSource.getImageInfo()      .then((p) => {        var sw;        var sh;        var scale;        var pw = p.size.width;        var ph = p.size.height;        // 根據(jù)centerCrop規(guī)則控制縮放比例        if (pw == outWidth && ph == outHeihgt) {          sw = outWidth;          sh = outHeihgt;        } else {          if (pw * outHeihgt > outWidth * ph) {            scale = outHeihgt / ph;          } else {            scale = outWidth / pw;          }          sw = pw * scale;          sh = ph * scale;        }        var options = {          editable: true,          rotate: 0,          desiredRegion: { size: { width: sw, height: sh },            x: pw / 2 - sw / 2,            y: ph / 2 - sh / 2,          },        }        if (callback) {          // 回調(diào),創(chuàng)建相關(guān)配置pixelmap          callback('', imageSource.createPixelMap(options));        }      })      .catch((error) => {        callback(error, null);      })  }}

2.3 顯示圖片

獲取到 PixelMap 解碼文件后,接下來(lái)就是將它渲染到應(yīng)用界面上。ImageKnife 的圖片渲染能力依賴(lài)的是 ArkUI 開(kāi)發(fā)框架提供的 image 組件的渲染能力。由于 eTS 是聲明式的,我們無(wú)法直接獲得 Image 組件的對(duì)象,需要依賴(lài) ArkUI 開(kāi)發(fā)框架的 @State 能力綁定輸入?yún)?shù),在改變屬性對(duì)象之后,通知 UI 組件重新渲染,達(dá)到圖片顯示的效果,相關(guān)代碼如下:
@Componentexport struct ImageKnifeComponent {  @Watch('watchImageKnifeOption') @Link imageKnifeOption: ImageKnifeOption;  @State imageKnifePixelMapPack: PixelMapPack = new PixelMapPack();  @State imageKnifeResource: Resource = $r('app.media.icon_loading')  @State imageKnifeString: string = ''  @State normalPixelMap: boolean = false;  @State normalResource: boolean = true;  previousData: ImageKnifeData = null;  nowData: ImageKnifeData = null;
  build() {    Stack() {      //Image組件配置      Image(this.normalPixelMap ? this.imageKnifePixelMapPack.pixelMap : (this.normalResource ? this.imageKnifeResource : this.imageKnifeString))        .objectFit(this.imageKnifeOption.imageFit ? this.imageKnifeOption.imageFit : ImageFit.Fill)        .visibility(this.imageVisible)        .width(this.imageWidth)        .height(this.imageHeight)    }  }  //必要的用戶(hù)配置和回調(diào)方法  configNecessary(request: RequestOption){    request.load(this.imageKnifeOption.loadSrc)      .addListener((err, data) => {        console.log('request.load callback')        this.imageKnifeChangeSource(data)        this.animateTo('image');        return false;      })
    if (this.imageKnifeOption.size) {      request.setImageViewSize(this.imageKnifeOption.size)    }  }  // imageknife 第一次啟動(dòng)和數(shù)據(jù)刷新后重新發(fā)送請(qǐng)求  imageKnifeExecute() {    let request = new RequestOption();    this.configNecessary(request);    this.configCacheStrategy(request);    this.configDisplay(request);    ImageKnife.call(request);  }  //返回?cái)?shù)據(jù)Image渲染展示圖片  imageKnifeSpecialFixed(data:ImageKnifeData) {    if (data.isPixelMap()) {      this.displayPixelMap(data);    }    else if (data.isString()) {      this.displayString(data);    } else if (data.isResource()) {      this.displayResource(data);    } else {    }  }}
注:@State 裝飾的變量是組件內(nèi)部的狀態(tài)數(shù)據(jù),當(dāng)這些狀態(tài)數(shù)據(jù)被修改時(shí),將會(huì)調(diào)用所在組件的 build 方法進(jìn)行 UI 刷新。

三、ImageKnife實(shí)戰(zhàn)

通過(guò)上文的介紹,相信大家對(duì) ImageKnife 組件有了深刻的了解。下面我們將創(chuàng)建一個(gè) ImageKnife_Test 項(xiàng)目,為大家展示 ArkUI 開(kāi)發(fā)框架中 ImageKnife 組件的使用。通過(guò)將 ImageKnife 組件下載至項(xiàng)目中,然后根據(jù) ImageKnifeOption 配置相關(guān)信息,即可完成 GIF 圖片的加載。

3.1 創(chuàng)建項(xiàng)目

如圖 8 所示,在 DevEco Studio 中新建 ImageKnife_Test 項(xiàng)目,項(xiàng)目類(lèi)型選擇 Application,語(yǔ)言選擇 eTS,點(diǎn)擊 Finish 完成創(chuàng)建。

51e17770-d6ac-11ec-bce3-dac502259ad0.jpg

圖8 創(chuàng)建項(xiàng)目

3.2 添加依賴(lài)

成功創(chuàng)建項(xiàng)目后,接下來(lái)就是將 ImageKnife 組件下載至項(xiàng)目中。

首先,我們需找到 .npmrc 配置文件,并在文件中添加 @ohos 的 scope 倉(cāng)庫(kù)地址:@ohos:registry=https://repo.harmonyos.com/npm/,如圖 9 所示:

52287cec-d6ac-11ec-bce3-dac502259ad0.jpg

圖9 添加 scope倉(cāng)庫(kù)地址

配置好 npm 倉(cāng)庫(kù)地址后,如圖 10 所示,在 DevEco Studio 的底部導(dǎo)航欄,點(diǎn)擊“Terminal”(快捷鍵 Alt+F12),鍵入命令:npm install @ohos/imageknife 并回車(chē),此時(shí) ImageKnife 組件會(huì)被自動(dòng)下載至項(xiàng)目中。下載完成后工程根目錄下會(huì)生成 node_modules/@ohos/imageknife 目錄。

526d892c-d6ac-11ec-bce3-dac502259ad0.jpg

圖10 下載至項(xiàng)目

3.3 編寫(xiě)邏輯代碼

ImageKnife 組件成功下載至項(xiàng)目中后,接下來(lái)就是邏輯代碼編寫(xiě),這里我們將為大家介紹兩種使用方式:

方式一:首先初始化全局 ImageKnife 實(shí)例,然后在 app.ets 中調(diào)用 ImageKnife.with() 進(jìn)行初始化,相關(guān)代碼如下:


import {ImageKnife} from '@ohos/imageknife'export default {  data: {    imageKnife: {} // ImageKnife  },  onCreate() {    this.data.imageKnife = ImageKnife.with();  },  onDestroy() {  },}然后在頁(yè)面index.ets中使用imageknife,相關(guān)代碼如下:@Entry@Componentstruct Index {  build() {
  }
  // 頁(yè)面初始化完成,生命周期回調(diào)函數(shù)中 進(jìn)行調(diào)用ImageKnife  aboutToAppear() {    let requestOption = new RequestOption();  requestOptin.load($r('app.media.IceCream'))  .addListener((err,data) => {      //加載成功/失敗回調(diào)監(jiān)聽(tīng)    })    ...  ImageKnife.call(requestOption)  }}
var ImageKnife;var defaultTemp = globalThis.exports.defaultif (defaultTemp != undefined) {  ImageKnife = defaultTemp.data.imageKnife;}
方式二:在 index.ets 中,直接使用 ImageKnifeOption 作為入?yún)?,并配合自定義組件 ImageKnifeComponent 使用,相關(guān)代碼如下:
import {ImageKnifeOption} from '@ohos/imageknife'
@Entry@Componentstruct Index {  @State imageKnifeOption1: ImageKnifeOption =    {      loadSrc: $r('app.media.gifSample'),      size: { width: 300, height: 300 },      placeholderSrc: $r('app.media.icon_loading'),      errorholderSrc: $r('app.media.icon_failed')    };  build() {    Scroll() {      Flex({ direction: FlexDirection.Column, alignItems: ItemAlign.Center, justifyContent: FlexAlign.Center }) {        ImageKnifeComponent({ imageKnifeOption: $imageKnifeOption1 })      }    }    .width('100%')    .height('100%')  }}
以上就是本期全部?jī)?nèi)容,恭喜大家又花幾分鐘時(shí)間收獲了一個(gè)實(shí)用的組件。希望廣大開(kāi)發(fā)者能利用這個(gè)強(qiáng)大的開(kāi)源組件開(kāi)發(fā)出更多精美的應(yīng)用。同時(shí),我們會(huì)陸續(xù)更新實(shí)用組件的解析,敬請(qǐng)期待! 審核編輯 :李倩

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 框架
    +關(guān)注

    關(guān)注

    0

    文章

    404

    瀏覽量

    18505
  • 組件
    +關(guān)注

    關(guān)注

    1

    文章

    603

    瀏覽量

    19070

原文標(biāo)題:ImageKnife組件,讓小白也能輕松搞定圖片開(kāi)發(fā)

文章出處:【微信號(hào):gh_e4f28cfa3159,微信公眾號(hào):OpenAtom OpenHarmony】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    中科源CPET簡(jiǎn)介及產(chǎn)品體系簡(jiǎn)介

    ? ? ? 車(chē)載電源總成是電動(dòng)汽車(chē)的核心 “能量樞紐”,集成車(chē)載充電機(jī)(OBC)、DC/DC 變換器、高壓配電盒(PDU)三大關(guān)鍵部件,可根據(jù)應(yīng)用需求設(shè)計(jì)為獨(dú)立式或二合一/三合一/多合一集成式,作為整車(chē)“電控總成”的核心模塊,其承擔(dān)著外部電網(wǎng)與動(dòng)力電池、高壓系統(tǒng)與低壓系統(tǒng)之間的電能轉(zhuǎn)換、傳輸及管理核心功能,直接決定電動(dòng)汽車(chē)的充電速度、用電效率與運(yùn)行穩(wěn)定性,產(chǎn)品可靠性更是整車(chē)安全與核心性能的重要保障。因此,在成品階段對(duì)車(chē)載電源
    發(fā)表于 03-20 11:14 ?0次下載

    CET消防設(shè)備電源監(jiān)控系統(tǒng)簡(jiǎn)介

    電子發(fā)燒友網(wǎng)站提供《CET消防設(shè)備電源監(jiān)控系統(tǒng)簡(jiǎn)介 .pdf》資料免費(fèi)下載
    發(fā)表于 03-18 15:11 ?0次下載

    各種顯示技術(shù)簡(jiǎn)介

    各種 顯示****技術(shù)簡(jiǎn)介 致力成為差異化顯示領(lǐng)域中全鏈路方案的領(lǐng)先者 ** 各種顯示器方案** 1.多種規(guī)格的芯片,根據(jù)不同功能,選擇最合適的芯片 2.適應(yīng)場(chǎng)景多,兼容性強(qiáng) 3.畫(huà)質(zhì)好,色彩
    發(fā)表于 02-02 15:51

    半導(dǎo)體金線鍵合(Gold Wire Bonding)封裝工藝技術(shù)簡(jiǎn)介;

    【博主簡(jiǎn)介】本人“愛(ài)在七夕時(shí)”,系一名半導(dǎo)體行業(yè)質(zhì)量管理從業(yè)者,旨在業(yè)余時(shí)間不定期的分享半導(dǎo)體行業(yè)中的:產(chǎn)品質(zhì)量、失效分析、可靠性分析和產(chǎn)品基礎(chǔ)應(yīng)用等相關(guān)知識(shí)。常言:真知不問(wèn)出處,所分享的內(nèi)容
    的頭像 發(fā)表于 12-07 20:58 ?1284次閱讀
    半導(dǎo)體金線鍵合(Gold Wire Bonding)封裝工藝技術(shù)<b class='flag-5'>簡(jiǎn)介</b>;

    比較器的簡(jiǎn)介分類(lèi)

    一、比較器簡(jiǎn)介據(jù)圣邦微SGMICRO比較器一級(jí)代理鑫富立介紹,比較器是一種得到廣泛使用的電路元件。實(shí)際上也是增益非常高的運(yùn)算放大器,可以放大輸入端很小的差分信號(hào),并驅(qū)動(dòng)輸出端切換到兩個(gè)輸出狀態(tài)中的一
    的頭像 發(fā)表于 11-21 20:13 ?669次閱讀
    比較器的<b class='flag-5'>簡(jiǎn)介</b>分類(lèi)

    VDMA IP核簡(jiǎn)介

    VDMA端口信號(hào) S_AXI_LITE:PS端可以通過(guò)AXI_LITE協(xié)議對(duì)IP核進(jìn)行控制; S_AXIS_S2MM:視頻流(AXI STREAM)輸入到IP核的FIFO中; S_AXIS_MM2S:IP核的FIFO生成視頻流(AXI STREAM)輸出到后端; S_AXI_S2MM:IP核的FIFO中的像素?cái)?shù)據(jù)存入memory; S_AXI_MM2S:memory中的像素?cái)?shù)據(jù)輸出到IP核的FIFO中; s_axi_lite_aclk、s_axi_mm2s_aclk、s_axis_mm2s_aclk、s_axi_s2mm_aclk、s_axis_s2mm_aclk分別為上述端口的控制時(shí)鐘,一般采用同一頻率時(shí)鐘。 mm2s_introut和s2mm_introut分別為MM2S和S2MM通道完成后的中斷信號(hào)輸出。 VDMA基礎(chǔ)設(shè)置 Address Width:地址寬度,與memory一致; Frame Buffers:幀緩存數(shù)量,當(dāng)選擇1時(shí),則輸入輸出皆在同一塊內(nèi)存中;當(dāng)選擇2及以上時(shí),則輸入輸出操作不同內(nèi)存區(qū)域,且交替進(jìn)行; Memory Map Data Width:S_AXI_S2MM或S_AXI_MM2S通道的數(shù)據(jù)位寬,且必須大于視頻流數(shù)據(jù)位寬; Burst Szie:AXI猝發(fā)傳輸大小,一般設(shè)置為16; Stream Data Width:視頻流數(shù)據(jù)位寬,一般由VDMA前端輸入自動(dòng)確定; Line Buffer Depth:S_AXIS_S2MM或S_AXIS_MM2S通道FIFO,當(dāng)輸入輸出視頻幀率相當(dāng)時(shí),可以適當(dāng)選擇較小深度,當(dāng)輸入輸出視頻幀率差別較大時(shí),需要加大FIFO深度。 對(duì)于寫(xiě)通道,同步選項(xiàng)選擇s2mm tuser,即當(dāng)一幀視頻的第一個(gè)像素到來(lái)時(shí),s2mm tuser被拉高,VDMA開(kāi)始寫(xiě)入memory; 對(duì)于讀通道,同步選項(xiàng)選擇None,即只要后端準(zhǔn)備好接受數(shù)據(jù),ready信號(hào)為1時(shí),VDMA即開(kāi)始輸出像素點(diǎn); 至于GenLock Mode,寫(xiě)通道和讀通道分別選擇Dynamic-Master和Dynamic-Slave,即寫(xiě)通道依次寫(xiě)入0,1,2···,而讀通道每次讀取寫(xiě)通道上一幀數(shù)據(jù),并且寫(xiě)通道和讀通道都可以跳過(guò)對(duì)方正在操作的幀。 VDMA寄存器設(shè)置 主要有以下幾個(gè)重要寄存器: 注意:HSIZE和STRIDE都是以Byte為單位,且VSIZE設(shè)置必須放置在所有寄存器設(shè)置的最后。
    發(fā)表于 10-28 06:14

    國(guó)密系列算法簡(jiǎn)介及SM4算法原理介紹

    一、 國(guó)密系列算法簡(jiǎn)介 國(guó)家商用密碼算法(簡(jiǎn)稱(chēng)國(guó)密/商密算法),是由我國(guó)國(guó)家密碼管理局制定并公布的密碼算法標(biāo)準(zhǔn)。其分類(lèi)1所示: 圖1 國(guó)家商用密碼算法分類(lèi) 就各種商用密碼的用途而言,如下
    發(fā)表于 10-24 08:25

    risc-v P擴(kuò)展(一) P指令集簡(jiǎn)介

    一、P擴(kuò)展簡(jiǎn)介: 數(shù)字信號(hào)處理(DSP)已成為現(xiàn)代電子系統(tǒng)的重要技術(shù)。廣泛的現(xiàn)代應(yīng)用都采用DSP算法來(lái)解決其特定領(lǐng)域的問(wèn)題,包括傳感器融合、伺服電機(jī)控制、音頻解碼/編碼、語(yǔ)音合成和編碼、MPEG4
    發(fā)表于 10-23 07:40

    AES加密模式簡(jiǎn)介與對(duì)比分析

    一、 常見(jiàn)加密模式簡(jiǎn)介 前幾篇分享介紹了AES和SM4加密算法。在加密算法的基礎(chǔ)上,還有不同的加密模式。加密模式是在計(jì)算機(jī)和通信領(lǐng)域中用于保護(hù)數(shù)據(jù)安全性的重要概念。它定義了加密算法在處理大量數(shù)據(jù)
    發(fā)表于 10-22 08:21

    AXI GPIO擴(kuò)展e203 IO口簡(jiǎn)介

    AXI GPIO簡(jiǎn)介 AXI-GPIO是一種Xilinx公司開(kāi)發(fā)的外設(shè)IP,可以連接到AXI總線上,并提供GPIO(General Purpose Input Output)功能。AXI-GPIO
    發(fā)表于 10-22 08:14

    Perforce P4產(chǎn)品簡(jiǎn)介:無(wú)限擴(kuò)展+全球協(xié)作+安全管控+工具集成

    P4中文版產(chǎn)品簡(jiǎn)介,由龍智整理,歡迎下載&交流探討。來(lái)看看為什么3A游戲、虛擬制片、半導(dǎo)體團(tuán)隊(duì)都在用P4進(jìn)行版本控制。還未用過(guò)的小伙伴,也歡迎聯(lián)系免費(fèi)體驗(yàn)!
    的頭像 發(fā)表于 05-30 13:32 ?961次閱讀
    Perforce P4產(chǎn)品<b class='flag-5'>簡(jiǎn)介</b>:無(wú)限擴(kuò)展+全球協(xié)作+安全管控+工具集成

    FPC組成簡(jiǎn)介及工程設(shè)計(jì)規(guī)范

    FPC產(chǎn)品簡(jiǎn)介概述: 1,F(xiàn)PC概念 2,F(xiàn)PC產(chǎn)品結(jié)構(gòu)組成 3,F(xiàn)PC材料 4,F(xiàn)PC產(chǎn)品類(lèi)型 5,F(xiàn)PC產(chǎn)品特征 FPC(Flexible Printed Circuit)撓性印刷電路版,簡(jiǎn)稱(chēng)
    發(fā)表于 05-27 15:10

    【直播預(yù)告】《實(shí)時(shí)操作系統(tǒng)應(yīng)用技術(shù)—基于RT-Thread與ARM的編程實(shí)踐》教學(xué)脈絡(luò)及資源簡(jiǎn)介

    直播預(yù)告直播主題:《實(shí)時(shí)操作系統(tǒng)應(yīng)用技術(shù)—基于RT-Thread與ARM的編程實(shí)踐》教學(xué)脈絡(luò)及資源簡(jiǎn)介開(kāi)放時(shí)間:2025年5月29日(周四)20:00主講老師:王宜懷課程類(lèi)型:視頻直播觀看平臺(tái)
    的頭像 發(fā)表于 05-26 17:50 ?1426次閱讀
    【直播預(yù)告】《實(shí)時(shí)操作系統(tǒng)應(yīng)用技術(shù)—基于RT-Thread與ARM的編程實(shí)踐》教學(xué)脈絡(luò)及資源<b class='flag-5'>簡(jiǎn)介</b>

    藍(lán)牙LE Audio技術(shù)簡(jiǎn)介和優(yōu)勢(shì)分析

    Energy)技術(shù)的優(yōu)點(diǎn),同時(shí)又具備卓越的音頻性能。本文將從技術(shù)簡(jiǎn)介和優(yōu)勢(shì)分析兩個(gè)方面對(duì)藍(lán)牙LE Audio技術(shù)進(jìn)行詳細(xì)的介紹。 一、藍(lán)牙LE Audio技術(shù)簡(jiǎn)介 藍(lán)牙LE Audio技術(shù)是藍(lán)牙技術(shù)聯(lián)盟在
    的頭像 發(fā)表于 05-21 16:08 ?5285次閱讀

    NVMe協(xié)議簡(jiǎn)介2

    NVMe指令提交與完成機(jī)制 NVMe指令提交與完成機(jī)制是NVMe協(xié)議的核心,該機(jī)制制定了NVMe指令的交互流程和處理步驟。在基于PCIe的NVMe協(xié)議中,NVMe主機(jī)控制器與NVMe設(shè)備的交互通過(guò)PCIe進(jìn)行,使用PCIe的存儲(chǔ)讀寫(xiě)TLP請(qǐng)求。指令的提交與完成機(jī)制如圖1所示,圖中展示的指令提交與完成步驟如下: 圖1 NVMe指令提交與完成步驟圖 (1)主機(jī)控制器向提交隊(duì)列寫(xiě)入一個(gè)或多個(gè)提交命令; (2)主機(jī)請(qǐng)求配置NVMe設(shè)備的提交隊(duì)列尾門(mén)鈴寄存器,表示有新的命令需要進(jìn)行處理; (3)NVMe設(shè)備從提交隊(duì)列中讀取提交指令條目; (4)NVMe繼續(xù)執(zhí)行獲取的命令,命令可以無(wú)序完成; (5)命令完成執(zhí)行后,控制器將完成隊(duì)列條目寫(xiě)入關(guān)聯(lián)的完成隊(duì)列。NVMe設(shè)備在完成隊(duì)列條目中提供最近的關(guān)聯(lián)提交隊(duì)列條目頭指針; (6)NVMe設(shè)備可選地向主機(jī)生成一個(gè)中斷,以表明有一個(gè)新的完成隊(duì)列條目要等待主機(jī)控制器使用和處理; (7)主機(jī)控制器處理完成隊(duì)列中的新完成隊(duì)列條目; (8)主機(jī)控制器請(qǐng)求配置完成隊(duì)列頭門(mén)鈴寄存器,指示完成隊(duì)列條目已被處理。
    發(fā)表于 05-15 23:15
    大丰市| 寻乌县| 全州县| 宝鸡市| 竹北市| 阳东县| 和龙市| 贵德县| 方城县| 青阳县| 阿瓦提县| 平度市| 赫章县| 潢川县| 阿拉善盟| 法库县| 祁东县| 平遥县| 波密县| 铜鼓县| 甘谷县| 河东区| 南昌县| 巴林左旗| 松江区| 沁阳市| 仙游县| 金乡县| 洞口县| 宁安市| 平凉市| 光山县| 手游| 奉贤区| 个旧市| 田阳县| 瑞昌市| 上栗县| 彰化县| 和龙市| 皮山县|