當前位置:首頁 > 嵌入式 > 嵌入式軟件
[導讀]陳渝大俠翻譯的 uClinux2.6入門


原文出自:http://adam.kaist.ac.kr/~hschoe/Get...inuxARM2_6.html
作者:Hyok S.Choi < hyok.choi@samsung.com  > 
翻譯:renbagshoes < renbagshes12@yahoo.com.cn  > 
轉(zhuǎn)載請注明www.linuxsir.org ,謝謝! 

一、使用uClinux/ARM 2.6的原因?
為什么你要使用uClinux?有很多的理由使uClinux做為你的嵌入式操作系統(tǒng)。其中大部分認為uClinux有以下好處: 

輕便 

你可以編譯linux2.6的內(nèi)核得到一個300k以下的內(nèi)核鏡像,它包括終端和一些基本的設備驅(qū)動以及只讀文件系統(tǒng)。并且flat格式的二進制zImage和應用程序要比linux傳統(tǒng)使用的ELF二進制小30%--50%,由于使用了較少的標準的C和C++庫。 
XIP(execution in place) 

你能通過XIP來在一個較小的RAM時執(zhí)行你的內(nèi)核鏡像,甚至是應用程序。它能幫助你快速的啟動,盡管flash的存取時間或是rom啟動鏡像足夠快以及有足夠的緩存大小。(如果我們想找到它們最優(yōu)化的平衡點,可以交換兩者之間這些變量。) 

便宜 

MMU(內(nèi)存管理單元)核心大小大約占典型的ARM SoC(System-on-Chip單片機)wafer(晶體)的30%。在典型的網(wǎng)絡和嵌入式系統(tǒng)里有一半以上的應用程序不需要MMU。甚至如果只有一個CPU的許多RTOS(實時操作系統(tǒng))在默認情況下也不使用MMU。 
完全的Linux應用程序接口 

除少數(shù)情況外,你可以在uClinux平臺上完全使用Linux應用程序接口。你能在uClibc里使用多線程以及使用標準的系統(tǒng)調(diào)用。在用戶盤里的uClinux發(fā)布包里有大量的應用程序被移植到了uClinux系統(tǒng)上。


Easiar to adapt 

在uClinux性能里有一個有趣的特性,是應用程序可以訪問整個系統(tǒng),包括設備里的寄存器,with a bit of wrapper ,我們能制作固件代碼做為無格式的應用程序運行在 uClinux上!當然,你能加一些設備驅(qū)動和系統(tǒng)調(diào)用來調(diào)用以及使用許多打開的Ips在混和的舊的固件代碼里。如果你計劃移動你的固件代碼到linux,但你沒有熟悉的linux系統(tǒng)程序,uClinux是一個很好的出發(fā)點 

完全的linux2.6內(nèi)核的特性 

盡管uClinux很小,但它支持linux2.6內(nèi)核約定的全部的特性,包括內(nèi)核優(yōu)先級特性以及許多的文件系統(tǒng),設備驅(qū)動。為linux約定設備驅(qū)動端口是容易實現(xiàn)的。幾乎所有的代碼不需要改變就可以編譯,除了從虛擬地址到物理的內(nèi)存鏡像外。 
注:上面的部分由于涉及的概念太多,翻譯的不大好,請大家指正,謝謝。 

二、初次編譯uClinux/ARM2.6指南 

如果你決定使用uClinux做為開發(fā)環(huán)境,那么下面的部分將會讓uClinux運行在你的linux PC機上: 

1、獲得uClinux發(fā)布包 

一個最容易得到uClinux的發(fā)布包的方法是直接訪問uClinux.org站點: 
http://www.uclinux.org/pub/uClinux/dist/ 
注意這里發(fā)布的內(nèi)核版本可能不是最新的,但你能找到一個最新的補丁以及從kernel.org站點上找一個對應的linux內(nèi)核版本來制作一個最新的uClinux內(nèi)核。此時(2004年05月25日)可從“http://www.uclinux.org/pub/uClinux/dist”獲得最新的發(fā)布包的版本是uClinux-dist.20040408.tar.gz。如果你對編譯軟件不是很熟悉,那么根據(jù)這個指南你將會很容易的使用這個分布包來制作你的uClinux內(nèi)核或是升級它到最新的版本。 

2、獲得最新的內(nèi)核及補丁 

你能到這里找到最新的uClinux/ARM內(nèi)核補?。?nbsp;
http://adam.kaist.ac.kr/~hschoe/  
在下載的部分,你將會找到“l(fā)inux-2.6.x-hscx.patch.gz”最新的鏈接,以及原始的內(nèi)核包: 
   http://adam.kaist.ac.kr/~hschoe/dow...5-hsc2.patch.gz 
和 http://www.kernel.org/pub/linux/ker...x-2.6.5.tar.bz2 

3、ARM-ELF工具鏈 

從linux2.6內(nèi)核代碼使用了一些更新的binutils新特性以來,你需要一個比uclinux.org站點上更新的ARM-ELF工具鏈來編譯內(nèi)核。你能夠從上面的與下載內(nèi)核和補丁相同的download部分找到最新的工具鏈,就在當前的鏈接下: 
http://adam.kaist.ac.kr/~hschoe/dow...ols-20040427.sh 

4、硬件平臺或是一個ARMulator(ARM仿真) 

當然你需要一個平臺來運行uClinux內(nèi)核,請首先看一下注意事項里有那些平臺被支持。即使你不能找到適用于你的平臺,或是你沒有任何的硬件平臺,那你也能在你的linux PC機上運行這個內(nèi)核:使用ARMulator(ARM仿真)。ARMulator是一個以GDB調(diào)試器為基礎的仿 真,這個仿真完全支持Atmel AT91x和arm7tdmi EB01。ARMulator的主頁在這: 

http://www.uclinux.org/pub/uClinux/utilities/armulator/  

你也能直接從這里下載: 

http://www.uclinux.org/pub/uClinux/...gdb-5.0.tar.bz2(原始gdb-5.0包) 
http://www.uclinux.org/pub/uClinux/...021127.patch.gz(gdb-5.0所依賴的補丁) 

如果你想在ARMulator上運行內(nèi)核的ramdisk(虛擬磁盤),那么你就需要從這下載另外一個軟件包: 

http://adam.kaist.ac.kr/~hschoe/dow...040412.patch.gz 

5、如果你是初次編譯這些發(fā)布包的話,OK!從這我們將會一步一步的進行 
(現(xiàn)在把上面所下載的軟件包都發(fā)在/root/incoming目錄里) 

(On this guide, the downloaded files are gathered on ~/incoming 
and the ARMulator is used for platform to run on.) 

6、安裝工具鏈 

以root用戶來執(zhí)行arm-elf-tools-20040427.sh,像這樣: 

[root@hyoklinux /]#/bin/sh ~/incoming/arm-elf-tools-20040427.sh 

注:~是你的root用戶目錄,當然也可以選擇別的目錄,但這取決于你的第5步所設置的目錄。 

你將看到被安裝文件的列表,這個工具鏈的可執(zhí)行的二進制文件被安裝到了/usr/local/bin目錄里,所以你的環(huán)境變量的搜索路徑應包括這個目錄,通常使用的發(fā)行版像redhat等已經(jīng)將這個路徑包括在$PATH變量里,可以用下面的命令查看一下: 

[root@hyoklinux /]#echo $PATH 

7、釋放uClinux發(fā)布包 


在一個有2GB空間的目錄里來釋放uclinux發(fā)布包 
[root@hyoklinux /]# tar -zxvf ~/incoming/uClinux-dist-20040408.tar.gz 
讓我們看看uClinux-dist目錄里有什么文件 
[root@hyoklinux /]# cd uClinux-dist/ 
[root@hyoklinux uClinux-dist]# ls -al 
total 104 
drwxr-xr-x 15 1000 users 4096 Apr 8 09:27 . 
drwxr-xr-x 28 root root 4096 Apr 27 20:32 .. 
-rw-r--r-- 1 1000 users 18007 Apr 8 09:13 COPYING 
drwxr-xr-x 3 1000 users 4096 Apr 8 09:13 Documentation 
-rw-r--r-- 1 1000 users 9305 Apr 8 09:13 Makefile 
-rw-r--r-- 1 1000 users 4934 Apr 8 09:13 README 
-rw-r--r-- 1 1000 users 1743 Apr 8 09:13 SOURCE 
drwxr-xr-x 2 1000 users 4096 Apr 15 15:19 bin 
drwxr-xr-x 3 1000 users 4096 Apr 8 09:27 config <-- 為本地用戶提供的配置文件以及其它的 
drwxr-xr-x 11 1000 users 4096 Apr 8 09:27 freeswan <-- IPsec的實現(xiàn) 
drwxr-xr-x 68 1000 users 4096 Apr 8 09:23 glibc <-- GNU C庫 
drwxr-xr-x 18 1000 users 4096 Apr 8 09:28 lib <-- 許多移植到uClinux的庫,包括uC-libc. 
drwxr-xr-x 15 1000 users 4096 Apr 8 09:27 linux-2.0.x <-- uClinux 2.0.x kernel 
drwxr-xr-x 16 1000 users 4096 Apr 8 09:27 linux-2.4.x <-- uClinux 2.4.x kernel 
drwxr-xr-x 18 1000 users 4096 Apr 8 09:27 linux-2.6.x <-- uClinux 2.6.x kernel 
drwxr-xr-x 3 1000 users 4096 Apr 8 09:26 tools <-- 安裝romfs提供的程序以及其它的 
drwxr-xr-x 17 1000 users 4096 Apr 8 09:27 uClibc <-- uClibc可從uclibc.org找到,與uC-libc不同. 
drwxr-xr-x 174 1000 users 4096 Apr 8 09:27 user <-- the“userland”被移植的應用程序 
drwxr-xr-x 44 1000 users 4096 Apr 8 09:27 vendors <-- 每一個vendor/models的配置文件 
注:vendor(計算機銷售商)  models(模型) 

8、用這些文件制作出一個新的linux-2.6.x內(nèi)核 

在20040408發(fā)布包目錄里的linux-2.6.x是由內(nèi)核“l(fā)inux-2.6.2”和補丁“l(fā)inux-2.6.2-uc0”生成的。而uClinux/ARM2.6需要更新的內(nèi)核版本(如linux-2.6.5 + linux-2.6.5-hsc2.patch)。 
[root@hyoklinux uClinux-dist]# tar -jxvf ~/incoming/linux-2.6.5.tar.bz2 
現(xiàn)在我們得到了整個的linux-2.6.5源代碼,以及所需的內(nèi)核補丁。 
[root@hyoklinux uClinux-dist]# gzip -dc ~/incoming/linux-2.6.5-hsc2.patch.gz | patch -p0 

運行上面的命令后,你將會看到一些補丁目錄里包含有“armnommu”的字符串的代碼。你可以在你的uClinux 2.6內(nèi)核里使用“l(fā)inux-2.6.5”的目錄名,這不是必需的。然而,我覺得使用“l(fā)inux-2.6.x”這個名字會更方便些。 
因此你現(xiàn)在不需要原來uClinux目錄里的linux-2.6.x(即那個linux-2.6.2-uc0),執(zhí)行: 
[root@hyoklinux uClinux-dist]# rm -rf linux-2.6.x/ 
然后我們將重命名更新補丁的內(nèi)核目錄名為“l(fā)inux-2.6.x”,執(zhí)行: 
[root@hyoklinux uClinux-dist]# mv linux-2.6.5 linux-2.6.x 

9、確定配置文件 

當前的uClinux發(fā)布包不包含有關(guān)于uClinux/ARM2.6完整的配置文件。我們需要簡單的修改一下,ARMulator默認的配置文件在vendors/GDB/ARMulator目錄下面。我們能像下面這樣來修改它: 
[root@hyoklinux uClinux-dist]# cp linux-2.6.x/arch/armnommu/configs/GDB_ARMulator_defconfig  vendors/GDB/ARMulator/config.linux-2.6.x 

為了rootfs能使用ramdisk,我們需要修改一下配置目錄里的“rc”這個文件,這樣就可以使用1號的ramdisk設備了。 

(原文:Since we’ll use a ramdisk for the rootfs, we need to fix the “rc” in the 
configuration directory to use ramdisk device number 1) 

像下面這樣編輯vendors/GDB/ARMulator/rc這個文件: 
[root@hyoklinux uClinux-dist]# vim vendors/GDB/ARMulator/rc 

hostname GDB-ARMulator 
/bin/expand /etc/ramfs.img /dev/ram1 
mount -t proc proc /proc 
mount -t ext2 /dev/ram1 /var 
mkdir /var/tmp 
mkdir /var/log 
mkdir /var/run 
mkdir /var/lock 
mkdir /var/empty 
cat /etc/motd 

10、配置內(nèi)核和安裝用戶應用程序 

[root@hyoklinux uClinux-dist]# make menuconfig 
首先在“Main Menu”找到“Vendor/Product”所在行,選擇“GDB/ARMulator”,像這樣: 
--- Select the Vendor you wish to target 
(GDB) Vendor 
--- Select the Product you wish to target 
(ARMulator) GDB Products 
你可以按’esc’鍵或是“Exit”按鈕返回主菜單。 

在主菜單選擇“Kernel/Library/Defaults選項”。 
選擇內(nèi)核版本為“l(fā)inux-2.6.x”,以及選擇使用的庫為“uClibc”。 
切換到下面的菜單: 
(linux-2.6.x) Kernel Version 
(uClibc) Libc Version 
[*] Default all settings (lose changes) (NEW) 
[*] Customize Kernel Settings (NEW) 
[*] Customize Vendor/User Settings (NEW) 
[*] Update Default Vendor Settings (NEW) 
你可以按’esc’鍵或是“Exit”按鈕返回主菜單。 

第一個“default all settings”選項是vendors目錄里默認的配置文件。第二個“Customize kernel settings”選項能讓我們編輯內(nèi)核配置。第三個“Customize Vendor/User settings”選項是為了生成romfs.img所需要配置應用程序和庫。最后一“Update Default Vendor settings”項,你對內(nèi)核的改變以及你所配置的應用程序?qū)⒈4嬖趘endors/product的目錄里。 
你可以按’esc’鍵或是“Exit”按鈕返回主菜單,然后保存并退出! 

11、配置內(nèi)核 

如果你確認了上面的配置過程,那么你可以得到一個配置文件。然而我們需要改變初始的ramdis的大小。因為romfs.img文件的大小在默認情況下大約是771KB。在“一般設置(General setup)”菜單里,有“Default kernel command string”這一項,這樣改變它: 

root=/dev/ram0 initrd=0x01300000,800K keepinitrd 
你可以按’esc’鍵或是“Exit”按鈕返回主菜單,然后保存并退出! 

程序/庫的配置 

在這個菜單上,我們不需要修改任何的設置,看一下配置按“exit”保存并退出! 

現(xiàn)在我們運行下面的這步來進行整個的編譯過程: 

[root@hyoklinux uClinux-dist]# make 
注:如果是編譯linux-2.4.x或是以下的版本的內(nèi)核,你在“make”之前還需要“make dep”這一步,但是在編譯linux-2.6.x的內(nèi)核時就不需要了。 
這一步將編譯整個內(nèi)核和uclibc(uClinux的系統(tǒng)庫),用戶程序,以及制作romfs.img文件。 

下面是結(jié)果,你可以像下面這樣查看image目錄里的文件:
 
[root@hyoklinux uClinux-dist]# ls -al images 
total 3036 
drwxr-xr-x 2 root root 4096 Apr 27 22:13 . 
drwxr-xr-x 17 1000 users 4096 Apr 27 22:13 .. 
-rw-r--r-- 1 root root 1540272 Apr 27 22:13 image.bin 
-rwxr-xr-x 1 root root 45912 Apr 27 22:13 linux.data 
-rwxr-xr-x 1 root root 704856 Apr 27 22:13 linux.text 
-rw-r--r-- 1 root root 789504 Apr 27 22:13 romfs.img 

[root@hyoklinux uClinux-dist]# ls -al linux-2.6.x/linux 
-rwxr-xr-x 2 root root 15499433 Apr 27 22:11 linux-2.6.x/linux 

如果你得到了相同的文件,那么你就有了整個內(nèi)核和rootfs鏡像。 

12、讓我們來使用ARMulator! 

安裝ARMulator,我們需要另外一個目錄來編譯GDB/ARMulator。然而這時我們將在uClinux-dist的臨時使用的目錄里安裝它。 
[root@hyoklinux uClinux-dist]# tar -jxvf ~/incoming/gdb-5.0.tar.bz2 
打上補丁: 
[root@hyoklinux uClinux-dist]# gzip -dc ~/incoming/gdb-5.0-uclinux-armulator-20021127.patch.gz | patch -p0 
執(zhí)行另外的一步: 
[root@hyoklinux uClinux-dist]# gzip -dc ~/incoming/gdb-5.0-uclinux-armulator-ramdisk-20040412.patch.gz | patch -p0 

好,現(xiàn)在所要編譯的代碼已經(jīng)準備好了,讓我們執(zhí)行它: 

[root@hyoklinux uClinux-dist]# cd gdb-5.0/ 
[root@hyoklinux gdb-5.0]# ./configure --target=arm-elf 
[root@hyoklinux gdb-5.0]# make 
[root@hyoklinux gdb-5.0]# make install 
現(xiàn)在可以運行ARMulator了! 

在運行ARMulator之前,我們需要一個能鏈接到鏡像文件“romfs.img”的標志。 
[root@hyoklinux gdb-5.0]# cd .. 
[root@hyoklinux uClinux-dist]# ln -s images/romfs.img boot.rom 

以及制作一個初始化GDB的腳本: 
[root@hyoklinux uClinux-dist]# cat > .gdbinit 
target sim 
load 
^D 

通過下面的命令,就可以運行我們的內(nèi)核了。 
[root@hyoklinux uClinux-dist]# arm-elf-gdb linux-2.6.x/linux 
GNU gdb 5.0 
Copyright 2000 Free Software Foundation, Inc. 
GDB is free software, covered by the GNU General Public License, and you are 
welcome to change it and/or distribute copies of it under certain conditions. 
Type "show copying" to see the conditions. 
There is absolutely no warranty for GDB. Type "show warranty" for details. 
This GDB was configured as "--host=i686-pc-linux-gnu --target=arm-elf"... 
Loaded ROM boot.rom to 0x01300000 
Loaded ROM boot.rom to 0x01400000 
Loaded ROM boot.rom to 0x04000000 
Loaded ROM boot.rom to 0x01300000 
Loaded ROM boot.rom to 0x01400000 
Loaded ROM boot.rom to 0x04000000 
Connected to the simulator. 
Loading section .init, size 0xb000 vma 0x1000000 
Loading section .text, size 0xa0b98 vma 0x100b000 
Loading section __ex_table, size 0x5b8 vma 0x10abba0 
Loading section .data, size 0x8ef8 vma 0x10ae000 
Start address 0x1000000 
Transfer rate: 5931584 bits in <1 sec. 

(gdb) run 

Starting program: /uClinux-dist/linux-2.6.x/linux 
Linux version 2.6.5-hsc1 (root@hyoklinux) (gcc version 2.95.3 20010315 (release)(ColdFire patches - 20010318 from http://fiddes.net/coldfire/)(uClinux XIP and shared lib patches from http://www.snapgear.com/)) 
#9 Mon May 3 11:00:29 KST 2004 
CPU: Atmel-AT91M40xxx [14000040] revision 0 (ARMvundefined/unknown) 
Machine: ATMEL EB01 
On node 0 totalpages: 1024 
DMA zone: 0 pages, LIFO batch:1 
Normal zone: 1024 pages, LIFO batch:1 
HighMem zone: 0 pages, LIFO batch:1 
Built 1 zonelists 
Kernel command line: root=/dev/ram0 initrd=0x01300000,800K keepinitrd 
PID hash table entries: 32 (order 5: 256 bytes) 
Memory: 4MB = 4MB total 
Memory: 2448KB available (642K code, 92K data, 44K init) 
Calibrating delay loop... 15.87 BogoMIPS 
Dentry cache hash table entries: 1024 (order: 0, 4096 bytes) 
Inode-cache hash table entries: 1024 (order: 0, 4096 bytes) 
Mount-cache hash table entries: 512 (order: 0, 4096 bytes) 
checking if image is initramfs...it isn’t (ungzip failed); looks like an initrd 
POSIX conformance testing by UNIFIX 
Linux NoNET1.0 for Linux 2.6 
Atmel USART driver version 0.99 
ttyS0 at 0xfffd0000 (irq = 2) is a builtin Atmel APB USART 
ttyS1 at 0xfffcc000 (irq = 3) is a builtin Atmel APB USART 
RAMDISK driver initialized: 16 RAM disks of 4096K size 1024 blocksize 
loop: loaded (max 8 devices) 
RAMDISK: romfs filesystem found at block 0 
RAMDISK: Loading 771 blocks [1 disk] into ram disk... done. 
VFS: Mounted root (romfs filesystem) readonly. 
Freeing init memory: 44K 
Shell invoked to run file: /etc/rc 
Command: hostname GDB-ARMulator 
Command: /bin/expand /etc/ramfs.img /dev/ram1 
Command: mount -t proc proc /proc 
Command: mount -t ext2 /dev/ram1 /var 
Command: mkdir /var/tmp 
Command: mkdir /var/log 
Command: mkdir /var/run 
Command: mkdir /var/lock 
Command: mkdir /var/empty 
Command: cat /etc/motd 
Welcome to 
____ _ _ 
/ __| ||_| 
_ _| | | | _ ____ _ _ _ _ 
| | | | | | || | _ | | | | / / 
| |_| | |__| || | | | | |_| |/  
| _______|_||_|_| |_|____|_/_/ 
| | 
|_| 


GDB/ARMulator support by  
For further information check: 
http://www.uclinux.org/   


Execution Finished, Exiting 


Sash command shell (version 1.1.1) 
/> ps 
PID PORT STAT SIZE SHARED %CPU COMMAND 
1 S 163K 0K 48.0 /sbin/init 
2 S 0K 0K 0.0 ksoftirqd/0 
3 S 0K 0K 1.0 events/0 
4 S 0K 0K 0.0 kblockd/0 
5 S 0K 0K 0.0 pdflush 
6 S 0K 0K 0.0 pdflush 
7 S 0K 0K 0.0 kswapd0 
8 S 0K 0K 0.0 aio/0 
11 S0 R 165K 0K 0.0 /bin/sh 
/> cd bin 
/bin> ls -al 
drwxr-xr-x 1 0 0 32 Jan 1 00:00 . 
drwxr-xr-x 1 0 0 32 Jan 1 00:00 .. 
-rwxr-xr-x 1 0 0 105980 Jan 1 00:00 boa 
-rwxr-xr-x 1 0 0 91104 Jan 1 00:00 dhcpcd 
-rwxr-xr-x 1 0 0 29624 Jan 1 00:00 expand 
-rwxr-xr-x 1 0 0 40504 Jan 1 00:00 gdbserver 
-rwxr-xr-x 1 0 0 73748 Jan 1 00:00 ifconfig 
-rwxr-xr-x 1 0 0 41144 Jan 1 00:00 inetd 
-rwxr-xr-x 1 0 0 31176 Jan 1 00:00 init 
-rwxr-xr-x 1 0 0 56380 Jan 1 00:00 login 
-rwxr-xr-x 1 0 0 64656 Jan 1 00:00 ping 
-rwxr-xr-x 1 0 0 34280 Jan 1 00:00 reboot 
-rwxr-xr-x 1 0 0 73860 Jan 1 00:00 route 
-rwxr-xr-x 1 0 0 79852 Jan 1 00:00 sh 
-rwxr-xr-x 1 0 0 51216 Jan 1 00:00 telnetd 
/bin> cat /proc/meminfo 
MemTotal: 2516 kB 
MemFree: 560 kB 
Buffers: 900 kB 
Cached: 188 kB 
SwapCached: 0 kB 
Active: 984 kB 
Inactive: 44 kB 
HighTotal: 0 kB 
HighFree: 0 kB 
LowTotal: 2516 kB 
LowFree: 560 kB 
SwapTotal: 0 kB 
SwapFree: 0 kB 
Dirty: 0 kB 
Writeback: 0 kB 
Mapped: 0 kB 
Slab: 752 kB 
Committed_AS: 0 kB 
PageTables: 0 kB 
VmallocTotal: 4194303 kB 
VmallocUsed: 0 kB 
VmallocChunk: 4194303 kB 
/bin> 

不錯的文章,值得讀一下,翻譯時來來回回讀了好幾遍,每次都有不同的收獲,感覺不錯 

由于時間倉促,未能測試,請大家和我關(guān)注這個貼子,使它能更準確、更完善! 

PIII550/384M/60G+40G/TNT2/8139/Fedora1.0 
LFS5.0+BLFS1.0ing…… 

http://timity.nease.net  
學習快樂!  

------

本站聲明: 本文章由作者或相關(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)閉