www.久久久久|狼友网站av天堂|精品国产无码a片|一级av色欲av|91在线播放视频|亚洲无码主播在线|国产精品草久在线|明星AV网站在线|污污内射久久一区|婷婷综合视频网站

當前位置:首頁 > 芯聞號 > 充電吧
[導讀]1 整體架構(gòu) ? Application ?--------------- ? Alsa-lib?????????????????? User Space ---------------------

1 整體架構(gòu)

? Application
?---------------
? Alsa-lib?????????????????? User Space
-------------------------------------
?? Alsa????????????????????? Kernel Space
?-------
? sound driver
?----------------------------------
?? Hardware
?
?Application : 比如aplay ,它不是直接調(diào)用Kernel所提供的接口,而是調(diào)用ALSA-lib 的接口。所以應用程序只要#include "asound.h"
?并鏈接libasound .
?對于上面的架構(gòu),在某一時刻只能有一個程序打開聲卡并占有它,此時其它程序打開的話,會返回busy.如要支持同時可以多個應用程序打開聲卡,需要支持
?混音功能,有些聲卡支持硬件混音,但大部分聲卡不支持硬件混音,需要軟件混音。這時需要ESD,pulseAudio等,架構(gòu)變?yōu)椋?br /> ?? App1??? App2
?---------------
??? ESD , pulseaudio
? --------------------?
? Alsa-lib?????????????????? User Space
-------------------------------------
?? Alsa????????????????????? Kernel Space
?-------
? sound driver
?----------------------------------
?? Hardware
? 此時,應用程序?qū)⒄{(diào)用ESD,pulseaudio等混音器提供的接口。對于ESD,很多程序支持,比如mplayer . 對于pulseaudio ,有相應的patch .
? Alsa本身也提供混音的plugin,dmix .
??? App1??? App2
?---------------
?? Alsa-lib (dmix)?????????? User Space
-------------------------------------
?? Alsa????????????????????? Kernel Space
?-------
? sound driver
?----------------------------------
?? Hardware
? 此架構(gòu)和架構(gòu)1,應用程序不需要做任何修改,只需要修改asound.conf
? 架構(gòu)1的asound.conf的例子:
? pcm.!default {??
? ?type hw???
?? ?card 0 ?
?? ?}
ctl.!default {?
?? ?type hw????
?? ?card 0
?? ??}
?? 架構(gòu)3的asound.conf的例子: ??
?? pcm.card0 {
??? type hw
??? card 0
}
pcm.!default {
??? type plug
??? slave.pcm "dmixer"
}
pcm.dmixer? {
??? type dmix
??? ipc_key 1025
??? slave {
??????? pcm "hw:0,0"
??????? period_time 0
??????? period_size 4096
??????? buffer_size 16384
??????? periods 128
??????? rate 44100
??? }
??? bindings {
??????? 0 0
??????? 1 1
??? }
}
?關(guān)于配置,可以參考這個網(wǎng)站:
? http://www.alsa-project.org/alsa-doc/alsa-lib/pcm_plugins.html

對于period_size和buffer_size,要注意,我將他們修改為1024 ,8192.在我們的平臺上用dmix會出現(xiàn)underrun!!! 信息。

?

2 ALSA kernel
2.1 目錄
??? Alsa-driver包括很多在開發(fā)中的驅(qū)動,以及一些2.2,2.4 linux內(nèi)核版本的支持。當這些驅(qū)動穩(wěn)定后,將移入alsa-kernel中,并最終在linux kernel
? 的sound目錄下.
? sound

/core

??? /oss

??? /seq

?????? /oss

?????? /instr

/ioctl132

/include

/drivers

??? /mpu401

??? /op13

/i2c

??? /13

/synth

??? /emux

/pci

?? /(cards)
??? /isa

?? /(cards)

/arm

/ppc

/sparc

/usb

/pcmcia/(cards)

/oss

?????

core目錄

這個目錄包含了中間層,ALSA的核心驅(qū)動。

core/oss

關(guān)于PCM和mixer的OSS模擬的模塊保存在這個目錄里面。Raw midi OSS模擬也被包含在ALSA rawmidi代碼中,因為它非常小。音序器代碼被保存在core/seq/oss目錄里面

core/ioctl32

這個目錄包含32bit-ioctl到64bit架構(gòu)(如x86-64,ppc64,sparc64)的轉(zhuǎn)換。對于32bit和alpha的架構(gòu),他們是不被編譯的。

core/seq

它和它的子目錄主要是關(guān)于ALSA的音序器。它包含了音序器的core和一些主要的音序器模塊如:snd-seq-midi,snd-seq-virmidi等等。它們僅僅在內(nèi)核配置中當CONFIG_SND_SEQUENCER被設定的時候才會被編譯。我們在使用的ALSA驅(qū)動中也沒有使用。

core/seq/oss

包含了OSS音序器的模擬的代碼。

core/seq/instr

包含了一些音序器工具層的一些模塊。

include目錄

這里面放的是ALSA驅(qū)動程序開放給用戶空間,或者被其他不同目錄引用的共同頭文件。

Drivers目錄

這個目錄包含了不同架構(gòu)的系統(tǒng)中的不同驅(qū)動共享的文件部分。它們是硬件無關(guān)的。在子目錄里面,會放一些不同組件的代碼,他們是根據(jù)不同的bus和cpu架構(gòu)實現(xiàn)的。

i2c目錄

這里面包含了ALSA的i2c組件。

雖然LINUX有i2c的標準協(xié)議層,ALSA還是擁有它關(guān)于一些card的專用i2c代碼,因為一些聲卡僅僅需要一些簡單的操作,而標準的i2c的API函數(shù)對此顯得太過復雜了。

i2c/l3

這是ARM L3 i2c驅(qū)動的子目錄

synth目錄

它包含了synth(合成器)的中間層模塊

pci目錄

它和它的一些子目錄文件負責PCI聲卡和一些PCI BUS的上層card模塊。

isa目錄

它和它的一些子目錄文件是處理ISA聲卡的上層card模塊。

arm,ppc,和sparc目錄

這里放置一些和芯片架構(gòu)相關(guān)的一些上層的card模塊。

usb目錄

這里包含一些USB-AUDIO驅(qū)動。在最新版本里面,已經(jīng)把USB MIDI 驅(qū)動也集成進USB-AUDIO驅(qū)動了。

pcmcia目錄

PCMCIA卡,特別是PCCcard驅(qū)動會放到這里。CardBus驅(qū)動將會放到pci目錄里面,因為API函數(shù)和標準PCI卡上統(tǒng)一的。

oss目錄

和ALSA無關(guān)。

在了解了相關(guān)的目錄結(jié)構(gòu)后,我們就開始來分析一下ALSA驅(qū)動了,在ALSA驅(qū)動中,我們所要從始至終要記住的是,我們的應用程序是不能直接訪問驅(qū)動的,必須通過中間的ALSA層,因此我么所寫的驅(qū)動,所提供的接口也是針對中間層的。

下面的內(nèi)容我們從兩個方面來考慮ALSA驅(qū)動,一個是驅(qū)動在操作硬件的同時,如何為中間層提供接口的,另外一個是應用程序是如何調(diào)用ALSA庫API來實現(xiàn)對驅(qū)動的連接從而操作硬件的。

這了解這兩個方面之前我們先來看一下ALSA的系統(tǒng)組成,也就是我們所說的中間層由哪些方面組成:

n?????? 驅(qū)動包alsa-driver:指內(nèi)核驅(qū)動程序,包括硬件相關(guān)的代碼和一些公共代碼,非常龐大

n?????? 開發(fā)包alsa-libs:指用戶空間的函數(shù)庫,提供給應用程序使用,應用程序應包括頭文件asoundlib.h。并使用共享庫libasound.so

n?????? 設置管理工具包alsa-utils:包含一些基于ALSA的用于控制聲卡的應用程序,如alsaconf(偵測系統(tǒng)中聲卡并寫一個適合的ALSA配置文件),aplay(基于命令行的聲音文件播放),arecord(基于命令行的聲音文件錄制)等

n?????? 還包括開發(fā)包插件alsa-libplugins,其他聲音相關(guān)處理小程序包alsa-tools,特殊音頻固件支持包alsa-firmware,OSS接口兼容模擬層工具alsa-oss共7個子項目,其中只有驅(qū)動包是必須的

其實對于驅(qū)動包,我們用的是內(nèi)核自帶的,所以我們也沒有安裝。這個我們在前面已經(jīng)詳細講解過,不多說了。

?????
?? 2.2 接口????
??? Alsa kernel為上層主要提供以下接口:
??? 1 control interface 提供靈活的方式管理注冊的聲卡和對存在的聲卡進行查詢。
??? 2 PCM interface? 提供管理數(shù)字音頻的捕捉和回放。
??? 3 原始 MIDI 接口
??? 一種標準電子音樂指令集。 這些 API 提供訪問聲卡上的 MIDI 總線。這些原始借口直接工作在 The MIDI
事件上,程序員只需要管理協(xié)議和時間。
??? 4 Timer 接口? 為支持聲音的同步事件提供訪問聲卡上的定時器。
??? 5 音序器接口? 一個比原始MIDI接口高級的MIDI編程和聲音同步高層接口。它可以處理很多的MIDI協(xié)議和定時器。
??? 6 mixer接口?? 控制發(fā)送信號和控制聲音大小的聲卡上的設備。/dsp/mixer,OSS中存在。
???
?? 我們主要關(guān)心1,2接口
??
?? 2.3 聲卡的管理
?? 2.3.1 卡 
?? 對于每一個聲卡,一個“卡”的記錄必須分配。
?? “卡”的記錄是聲卡的總部,它管理著聲卡上的所有的設備(或者組件)的列表,例如PCM,Mixer,MIDI等等。
?? 數(shù)據(jù)結(jié)構(gòu)為:snd_card
?? 其中 number : 第幾個聲卡,最大為SNDRV_CARDS?。競€,對于我們的系統(tǒng),只有一個聲卡的話,number為0
??    id???? : 聲卡的string
???????? devices : 設備列表
???????? proc_root?。簆roc文件的根
???????? private_data:聲卡的私有數(shù)據(jù)
???????? controls ?。郝暱ǖ目刂平涌诹斜?br /> ??    還有一些電源管理等
??
?? 調(diào)用snd_card_new來創(chuàng)建一個聲卡實體。
  snd_card_new(index, id, module, extra_size);
  其中extra_size為private_data內(nèi)存空間的大小,在snd_card_new中分配。

 ?。?3.2 設備(組件)
??? 卡實例創(chuàng)建后,我們可以attach一個組件(設備)給一個卡的實例。在alsa驅(qū)動中,一個組件用結(jié)構(gòu)snd_device對象表示。
??? 一個組件可以是一個PCM實例,一個控制實例,一個原始MIDI接口等。它調(diào)用snd_device_new創(chuàng)建。
???? snd_device_new(card, snd_device_type_t, device_data, &ops);
???? 在control.c ,pcm.c,info.c,Rawmidi.c以及timer.c中,都有snd_device_new的調(diào)用,分別創(chuàng)建類型為control,PCM等的deice.
???? 數(shù)據(jù)結(jié)構(gòu)為:snd_device
?struct list_head list;??/* list of registered devices */
?struct snd_card *card;??/* card which holds this device */
?snd_device_state_t state;?/* state of the device */
?snd_device_type_t type;??/* device type */
?void *device_data;??/* device structure */
?struct snd_device_ops *ops;?/* operations */
?snd_device_ops包含了注冊,unregister,free等函數(shù)。?
?在snd_card_new中,我們創(chuàng)建了一個control的device ,而snd_pcm_new創(chuàng)建了一個pcm的device
?
? 2.3.3 注冊與釋放
? snd_card_register 調(diào)用它后,device 文件可以被外界訪問。之前,不能安全被外界所訪問。
? snd_card_free 一般在退出的時候調(diào)用,這樣將把所有的組件都自動釋放掉。


? 2.4?? PCM接口
? ALSA PCM中間層非常強大,驅(qū)動只需要實現(xiàn)底層的函數(shù)以訪問硬件。
? 每個卡最多可以有4個PCM實例。
? 一個PCM實例包含playback(回放)和capture(錄音)流,數(shù)據(jù)結(jié)構(gòu)為:snd_pcm,其中struct snd_pcm_str streams[2]; stream[0]代表
? playback,stream[1]代表capture.
? 每一個pcm流包括一個或者多個pcm子流,
? 一些聲卡支持多個playback功能。例如,emu10k1有一個PCM回放的32位立體聲子流(substream),此時,每次打開,一個空閑的子流自動選擇并
? 打開,同時,如果只有一個子流存在并已經(jīng)打開了,接下來的打開要么被阻塞要么返回EAGAIN,但是這些在你的驅(qū)動中不需要關(guān)心,PCM中間層會
? 管理這些工作。
? snd_pcm_new創(chuàng)建一個實體,
? int snd_pcm_new(struct snd_card *card, char *id, int device,
??int playback_count, int capture_count,
???????? struct snd_pcm ** rpcm)
?? device :? 第幾個pcm實體,從0開始
?? playback_count: 回放子流數(shù)目 
?? capture_count:  錄音子流數(shù)目
??
? 流的數(shù)據(jù)結(jié)構(gòu):snd_pcm_str
? 其中 stream 表示方向,是playback還是capture
?    substream_count子流數(shù)目
?    struct snd_pcm_substream *substream;子流的指針,指向第一個子流,根據(jù)第一個,可以找到下一個(substream->next)
?
? snd_pcm_new_stream創(chuàng)建一個流 ,在snd_pcm_new中被調(diào)用。
?
? ?子流(substream)的數(shù)據(jù)結(jié)構(gòu):snd_pcm_substream
? ?其中 stream 表示方向,是playback還是capture
? ?   buffer_bytes_max 表示最大的環(huán)形buffer大小
? ? ?  dma_buffer    ?。?????
? ?   dma_max       最大 
? ?struct snd_pcm_ops *ops; 子流的操作函數(shù),snd_pcm_set_ops會設置ops
? ??struct snd_pcm_runtime *runtime;
??   next? 下一個substream,對于只有一個playback的子流,為NULL
??struct snd_timer *timer;??????
??
??snd_pcm_ops 定義了一系列硬件操作函數(shù),比如open , ioctrl , trigger等
??1 open callback :
?? ??static int snd_xxx_open(struct snd_pcm_substream *substream);
???? 這個函數(shù)在一個子流被打開時調(diào)用(snd_pcm_open_substream函數(shù)調(diào)用)
???? 調(diào)用關(guān)系為:
???? 在 snd_pcm_f_ops中 .open = snd_pcm_playback_open
??? snd_pcm_playback_open ---> snd_pcm_open_file---> snd_pcm_open_substream ---> snd_xxx_open
??? snd_pcm_f_ops的open ,當你對/dev/snd/PCMC0D0 open時候被調(diào)用
??? 我們的驅(qū)動主要是分配substream->runtime,并調(diào)用request_irq把中斷處理函數(shù)和runtime關(guān)聯(lián)起來。
???
??? 2 close callback
? static int snd_xxx_close(struct snd_pcm_substream *substream);
? 這個函數(shù)在一個子流被關(guān)閉時調(diào)用
???? 調(diào)用關(guān)系為:
???? 在 snd_pcm_f_ops中 .release = snd_pcm_release
??? snd_pcm_release --->? snd_pcm_release_substream ---> snd_xxx_close
??? snd_pcm_f_ops的release ,當你對/dev/snd/PCMC0D0 close時候被調(diào)用???
??? 我們的驅(qū)動主要是調(diào)用free_irq把中斷處理函數(shù)和runtime釋放掉。
??? (是否有內(nèi)存泄露,因為在open函數(shù)里對runtimer 用kmalloc了,在close函數(shù)里應該kfree(runtime)???
???
???? 3 ioctl callback
???? 一般用snd_pcm_lib_ioctl
????
???? 4 hw_params callback
???? static int snd_xxx_hw_params(struct snd_pcm_substream *substream,
?????????????????????????????? struct snd_pcm_hw_params *hw_params);
????? 調(diào)用關(guān)系為:
???? 在 snd_pcm_f_ops中 .unlocked_ioctl = snd_pcm_playback_ioctl
????????? snd_pcm_playback_ioctl --> snd_pcm_playback_ioctl1
????? -->snd_pcm_common_ioctl1 ---> snd_pcm_hw_params_user --->? snd_pcm_hw_params ---> snd_xxx_hw_params
????????
??? snd_pcm_f_ops的unlocked_ioctl,當你對/dev/snd/PCMC0D0 進行ioctl(int fd, int command, (char *) argstruct)調(diào)用時,文件系統(tǒng)的do_ioctl
??? 會先判斷unlocked_ioctl函數(shù)是否為空,不為空則調(diào)用filp->f_op->unlocked_ioctl ,其中command為?? SNDRV_PCM_IOCTL_HW_PARAMS?? .
??? 這個函數(shù)在 應用程序設置硬件參數(shù)時被調(diào)用,也就是說,當pcm子流的buffer大小,周期大小,格式等被定義的時候.
??? 許多硬件的設置必須在這個回調(diào)函數(shù)中做,包括buffer的分配.buffer的分配可以調(diào)用snd_pcm_lib_malloc_pages函數(shù).
??? 我們的驅(qū)動好像只有buffer的分配,沒做別的處理,會不會有問題 ????
???
??? 5 hw_free callback
??? static int snd_xxx_hw_free(struct snd_pcm_substream *substream);
??? 釋放在 hw_params中分配的資源
???
??? 6 prepare callback
??? static int snd_xxx_prepare(struct snd_pcm_substream *substream);
????????? 調(diào)用關(guān)系為:
???? 在 snd_pcm_f_ops中 .unlocked_ioctl = snd_pcm_playback_ioctl
????????? snd_pcm_playback_ioctl --> snd_pcm_playback_ioctl1
????? -->snd_pcm_common_ioctl1 ---> snd_pcm_prepare --> snd_pcm_do_prepare ---> snd_xxx_prepare
????? IO命令為 SNDRV_PCM_IOCTL_PREPARE.
????? 你可以在這個函數(shù)里設置格式類型,采樣率等,它和hw_params的區(qū)別在于 prepare回調(diào)函數(shù)在每次snd_pcm_prepare都會被調(diào)用
????? 例如,underrun后的恢復等
????? 在這個函數(shù)里,你可以通過runtime記錄substream->runtime得到一些值,例如,目前的采樣率,格式類型,聲道數(shù)目,runtime->rate, runtime->format or runtime->channels
????? 分配的內(nèi)存設置在 runtime->dma_area,大小和周期分別為runtime->buffer_size和runtime->period_size.
?????
????? 我們的驅(qū)動這個函數(shù)有問題 .
?????
?????
???? 7 trigger callback
????? static int snd_xxx_trigger(struct snd_pcm_substream *substream, int cmd);
????????? 調(diào)用關(guān)系為:
???? 在 snd_pcm_f_ops中 .unlocked_ioctl = snd_pcm_playback_ioctl
????????? snd_pcm_playback_ioctl --> snd_pcm_playback_ioctl1
????? -->snd_pcm_common_ioctl1 ---> snd_pcm_drain --> snd_pcm_do_drain_init ---> snd_xxx_trigger
????? IO命令為 SNDRV_PCM_IOCTL_DRAIN
????
???? 這個callback函數(shù)是原子的,也就是不能調(diào)用會sleep的函數(shù),trigger回調(diào)函數(shù)應當盡量小,只是triggering DMA,其他的操作在 hw_params和
???? perpare里面做.
???? 我們的驅(qū)動實現(xiàn)了start,stop,SUSPEND 和? RESUME, 沒有實現(xiàn)pause,unpause.還調(diào)用了msleep???? 這不對
???? mdelay是一個讓CPU空轉(zhuǎn),一直等待到批定的時間后才退出??
???? msleep是讓當前進程休眠,讓出CPU給其它進程使用,等到時間到了之后再喚醒??
???? msleep不能用于中斷上下文中??
????????
???? 8 pointer callback
???? static snd_pcm_uframes_t snd_xxx_pointer(struct snd_pcm_substream *substream)
???? 該回調(diào)函數(shù)在PCM中間層咨詢在buffer中當前硬件位置的時候被調(diào)用,位置以frames計算,范圍為0到buffer_size - 1.
?調(diào)用關(guān)系為:
???? snd_pcm_period_elapsed --> snd_pcm_update_hw_ptr_pos ---> snd_xxx_pointer
???? 在中斷處理函數(shù)中,snd_pcm_period_elapsed被調(diào)用,然后PCM中間層更新位置,并計算剩余空間,并喚醒睡著的線程.
??? SNDRV_PCM_POS_XRUN ????
???
??? 9 其他的callback非強制的,我們驅(qū)動沒實現(xiàn)他們.
??????
????
??
?設置好硬件操作函數(shù)后,你可以預先分配buffer,調(diào)用
?snd_pcm_lib_preallocate_pages_for_all
?該函數(shù)將更新子流的dma_max 以及 dma_buffer , 其中dma_buffer中的area 代表內(nèi)存區(qū)域
?
?PCM實例的釋放,一般不需要,PCM中間層會自動釋放其中的內(nèi)存的,除非你在初始化的時候,分配了一些特殊的變量(用kmalloc),
?此時在退出函數(shù)里,用kfree掉。
?
?2.4.2. runtime
?當一個PCM子流打開時,一個PCM的runtime實例被分配并賦給substream-〉runtime 。
runtime保持大多數(shù)你需要控制PCM的信息,hw_params and sw_params配置的拷貝,buffer的指針等
數(shù)據(jù)結(jié)構(gòu):snd_pcm_runtime
包括 hw? :hw_params 信息
硬件描述符(struct snd_pcm_hardware)包含了基本硬件配置的定義.首先,你將在open 回調(diào)函數(shù)里定義它.
需要說明的是:runtime實例保持著描述符的copy,不是對已經(jīng)的描述符的指針,也就是說,在open 回調(diào)函數(shù)中,你可以修改runtime->hw
根據(jù)你的需要.

?
?2.4.3 中斷處理
?中斷處理函數(shù)在聲卡驅(qū)動中的作用:更新buffer的位置并在buffer位置越過以前設置的period size時,告訴PCM中間層.調(diào)用snd_pcm_period_elapsed函數(shù)
?將告訴PCM中間層.
?在snd_pcm_hw_params中會對period_size進行設置.
?有以下幾種聲卡類型產(chǎn)生中斷的方式:
?1)在周期邊界產(chǎn)生中斷
?? 最常用的方式
?2)高頻率的timer中斷
?? 用于那些不產(chǎn)生中斷的芯片
?? 我們的實現(xiàn):
?對于位置pcm_buf_pos ,在prepare調(diào)用的時候設為0,在中斷的時候,每次會傳60個bytes,每次加上60,循環(huán).
?然后調(diào)用snd_pcm_period_elapsed函數(shù)通知上層.
?
?在中斷中調(diào)用spin_lock ???? 為了多處理器嗎???

?

?

PCM中的file_operation :
?? 當調(diào)用snd_pcm_new時,
?????? snd_pcm_new ---> snd_pcm_dev_register --> snd_register_device 此函數(shù)更新snd_minor結(jié)構(gòu),
??????
??? 而在 alsa_sound_init中,register_chrdev(major , "alsa",&snd_fops);當一個alsa主設備打開時,會調(diào)用snd_fops中的open函數(shù),
??? 也就是snd_open( 在sound.c中),而snd_open會根據(jù)snd_minor替換其file_ops,如果minor是PCM設備,將用PCM的file_operation
??? (snd_pcm_new中更新了)


本站聲明: 本文章由作者或相關(guān)機構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點,本站亦不保證或承諾內(nèi)容真實性等。需要轉(zhuǎn)載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請及時聯(lián)系本站刪除。
換一批
延伸閱讀

9月2日消息,不造車的華為或?qū)⒋呱龈蟮莫毥谦F公司,隨著阿維塔和賽力斯的入局,華為引望愈發(fā)顯得引人矚目。

關(guān)鍵字: 阿維塔 塞力斯 華為

加利福尼亞州圣克拉拉縣2024年8月30日 /美通社/ -- 數(shù)字化轉(zhuǎn)型技術(shù)解決方案公司Trianz今天宣布,該公司與Amazon Web Services (AWS)簽訂了...

關(guān)鍵字: AWS AN BSP 數(shù)字化

倫敦2024年8月29日 /美通社/ -- 英國汽車技術(shù)公司SODA.Auto推出其旗艦產(chǎn)品SODA V,這是全球首款涵蓋汽車工程師從創(chuàng)意到認證的所有需求的工具,可用于創(chuàng)建軟件定義汽車。 SODA V工具的開發(fā)耗時1.5...

關(guān)鍵字: 汽車 人工智能 智能驅(qū)動 BSP

北京2024年8月28日 /美通社/ -- 越來越多用戶希望企業(yè)業(yè)務能7×24不間斷運行,同時企業(yè)卻面臨越來越多業(yè)務中斷的風險,如企業(yè)系統(tǒng)復雜性的增加,頻繁的功能更新和發(fā)布等。如何確保業(yè)務連續(xù)性,提升韌性,成...

關(guān)鍵字: 亞馬遜 解密 控制平面 BSP

8月30日消息,據(jù)媒體報道,騰訊和網(wǎng)易近期正在縮減他們對日本游戲市場的投資。

關(guān)鍵字: 騰訊 編碼器 CPU

8月28日消息,今天上午,2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會開幕式在貴陽舉行,華為董事、質(zhì)量流程IT總裁陶景文發(fā)表了演講。

關(guān)鍵字: 華為 12nm EDA 半導體

8月28日消息,在2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會上,華為常務董事、華為云CEO張平安發(fā)表演講稱,數(shù)字世界的話語權(quán)最終是由生態(tài)的繁榮決定的。

關(guān)鍵字: 華為 12nm 手機 衛(wèi)星通信

要點: 有效應對環(huán)境變化,經(jīng)營業(yè)績穩(wěn)中有升 落實提質(zhì)增效舉措,毛利潤率延續(xù)升勢 戰(zhàn)略布局成效顯著,戰(zhàn)新業(yè)務引領(lǐng)增長 以科技創(chuàng)新為引領(lǐng),提升企業(yè)核心競爭力 堅持高質(zhì)量發(fā)展策略,塑強核心競爭優(yōu)勢...

關(guān)鍵字: 通信 BSP 電信運營商 數(shù)字經(jīng)濟

北京2024年8月27日 /美通社/ -- 8月21日,由中央廣播電視總臺與中國電影電視技術(shù)學會聯(lián)合牽頭組建的NVI技術(shù)創(chuàng)新聯(lián)盟在BIRTV2024超高清全產(chǎn)業(yè)鏈發(fā)展研討會上宣布正式成立。 活動現(xiàn)場 NVI技術(shù)創(chuàng)新聯(lián)...

關(guān)鍵字: VI 傳輸協(xié)議 音頻 BSP

北京2024年8月27日 /美通社/ -- 在8月23日舉辦的2024年長三角生態(tài)綠色一體化發(fā)展示范區(qū)聯(lián)合招商會上,軟通動力信息技術(shù)(集團)股份有限公司(以下簡稱"軟通動力")與長三角投資(上海)有限...

關(guān)鍵字: BSP 信息技術(shù)
關(guān)閉
關(guān)閉