当前位置:首页 > 单片机 > 单片机
[导读]工程里面的头文件2410Init.s包括了板子上电后的初始话,具体有几个步骤:讲述S3C2410启动程序设计1.屏蔽所有中断,关看门狗。2.根据工作频率设置PLL寄存器3.初始化存储控制相关寄存器4.初始化各模式下的栈指针5.设置

工程里面的头文件2410Init.s包括了板子上电后的初始话,具体有几个步骤:

讲述S3C2410启动程序设计

1.屏蔽所有中断,关看门狗。

2.根据工作频率设置PLL寄存器

3.初始化存储控制相关寄存器

4.初始化各模式下的栈指针

5.设置缺省中断处理函数

6.将数据段拷贝到RAM中,将零初始化数据段清零

7.跳转到C语言Main入口函数中

要看懂这个头文件是比较难的,我跟DVD视频的教程看了两遍,弄懂了一些,视频上讲的是ARM7S3C44B0的Init.s但我觉得和2410的差不多。我将这个程序注释了一下。可能有些地方不是很正确,只提供参考。

;=========================================
;NAME:2410INIT.S
;DESC:Cstartupcodes
;Configurememory,ISR,stacks
;InitializeC-variables
;HISTORY:
;2002.02.25:kwtark:ver0.0
;2002.03.20:purnnamu:AddsomefunctionsfortestingSTOP,POWER_OFFmode
;2002.04.10:SJS:subinterruptdisable0x3ff->0x7ff
;2002.11.29:Kong:DCDBANKSIZEResiger0x32->0xb2(ARMcoreburstenable)
;=========================================

INCLUDEoption.inc
INCLUDEmemcfg.inc
INCLUDE2410addr.inc

BIT_SELFREFRESHEQU(1<<22)

;下面是对arm处理器模式寄存器对应值的常数定义,arm处理器中有一个CPSR程序状态寄存器它的后五位决定目前的处理器模式
;pre-definedconstants
USERMODEEQU0x10
FIQMODEEQU0x11
IRQMODEEQU0x12
SVCMODEEQU0x13
ABORTMODEEQU0x17
UNDEFMODEEQU0x1b
MODEMASKEQU0x1f
NOINTEQU0xc0

;Thelocationofstacks
UserStackEQU(_STACK_BASEADDRESS-0x3800);0x33ff4800~
SVCStackEQU(_STACK_BASEADDRESS-0x2800);0x33ff5800~
UndefStackEQU(_STACK_BASEADDRESS-0x2400);0x33ff5c00~
AbortStackEQU(_STACK_BASEADDRESS-0x2000);0x33ff6000~
IRQStackEQU(_STACK_BASEADDRESS-0x1000);0x33ff7000~
FIQStackEQU(_STACK_BASEADDRESS-0x0);0x33ff8000~

;checkiftasm.exeisused.
;arm处理器有两种工作状态1.arm:32位这种工作状态下执行字对准的arm指令2.Thumb:16位这种工作状;态执行半字对准的Thumb指令
;因为处理器分为16位32位两种工作状态程序的编译器也是分16位和32两种编译方式所以下面的程序用;于根据处理器工作状态确定编译器编译方式
;code16伪指令指示汇编编译器后面的指令为16位的thumb指令
;code32伪指令指示汇编编译器后面的指令为32位的arm指令
;这段是为了统一目前的处理器工作状态和软件编译方式(16位编译环境使用tasm.exe编译
;Checkiftasm.exe(armasm-16...@ADS1.0)isused.
GBLLTHUMBCODE
[{CONFIG}=16;ifconfig==16这里表示你的目前处于领先地16位编译方式
THUMBCODESETL{TRUE};设置THUMBCODE为true
CODE32;转入32位编译模式
|;else
THUMBCODESETL{FALSE};设置THUMBCODE为false
]

MACRO
MOV_PC_LR
[THUMBCODE
bxlr
|
movpc,lr
]
MEND

MACRO
MOVEQ_PC_LR
[THUMBCODE
bxeqlr
|
moveqpc,lr
]
MEND

;注意下面这段程序是个宏定义很多人对这段程序不理解我再次强调这是一个宏定义所以大家要注意了
;下面包含的HandlerXXXHANDLERHandleXXX将都被下面这段程序展开
;这段程序用于把中断服务程序的首地址装载到pc中,有人称之为“加载程序”。
;本初始化程序定义了一个数据区(在文件最后),34个字空间,存放相应中断服务程序的首地址。每个字
;空间都有一个标号,以Handle***命名。
;在向量中断模式下使用“加载程序”来执行中断服务程序。
;这里就必须讲一下向量中断模式和非向量中断模式的概念
;向量中断模式是当cpu读取位于0x18处的IRQ中断指令的时候,系统自动读取对应于该中断源确定地址上的;
;指令取代0x18处的指令,通过跳转指令系统就直接跳转到对应地址
;函数中节省了中断处理时间提高了中断处理速度标例如ADC中断的向量地址为0xC0,则在0xC0处放如下
;代码:ldrPC,=HandlerADC当ADC中断产生的时候系统会
;自动跳转到HandlerADC函数中
;非向量中断模式处理方式是一种传统的中断处理方法,当系统产生中断的时候,系统将interrupt
;pending寄存器中对应标志位置位然后跳转到位于0x18处的统一中断
;函数中该函数通过读取interruptpending寄存器中对应标志位来判断中断源并根据优先级关系再跳到
;对应中断源的处理代码中
MACRO
$HandlerLabelHANDLER$HandleLabel
;HandlerLabel为中断服务入口地址
$HandlerLabel
subsp,sp,#4;Decrementsp(tostorejumpaddress)
;将要使用的r0寄存器入栈
stmfdsp!,{r0};pUSHtheworkregistertostack(lrdoes'tpushbecauseitreturntooriginaladdress)
ldrr0,=$HandleLabel;loadtheaddressofHandleXXXtor0
ldrr0,[r0];loadthecontents(serviceroutinestartaddress)ofHandleXXX
;将对应的中断函数首地址入栈
strr0,[sp,#4];storethecontents(ISR)ofHandleXXXtostack
;将中断函数首地址出栈放入程序指针中系统将跳转到对应中断处理函数
ldmfdsp!,{r0,pc};pOPtheworkregisterandpc(jumptoISR)
MEND

;一个arm由RO,RW,ZI三个断组成其中RO为代码段,RW是已经初始化的全局变量,ZI是未初始化的全局变量
;(对于GNU工具对应的概念是TEXT,DATA,BSS)bootloader
;bootloader要将RW段复制到ram中并将ZI段清零编译器使用下列段来记录各段的起始和结束地址
;|Image$$RO$$Base|;RO段起始地址
;|Image$$RO$$Limit|;RO段结束地址加1
;|Image$$RW$$Base|;RW段起始地址
;|Image$$RW$$Limit|;RW段结束地址加1
;|Image$$ZI$$Base|;ZI段起始地址
;|Image$$ZI$$Limit|;ZI段结束地址加1
;这些标号的值是通过编译器的设定来确定的如编译软件中对ro-base和rw-base的设定,例如ro-;base=0xc000000rw-base=0xc5f0000
IMPORT|Image$$RO$$Limit|;EndofROMcode(=startofROMdata)
IMPORT|Image$$RW$$Base|;BaseofRAMtoinitialise
IMPORT|Image$$ZI$$Base|;Baseandlimitofarea
IMPORT|Image$$ZI$$Limit|;tozeroinitialise



IMPORTMain;Themainentryofmonprogram

AREAInit,CODE,READONLY
;异常中断矢量表(每个表项占4个字节)下面是中断向量表一旦系统运行时有中断发生即使移植了操作;系统如linux处理器已经把控制权交给了操作系统一旦发生中断处理器还是会跳转到从0x0开始
;中断向量表中某个中断表项(依据中断类型)开始执行
;具体中断向量布局请参考s3c44b0spec例如adc中断向量为0x000000c0下面对应表中第49项位置向量地址0x0+4*(49-1)=0x000000c0
ENTRY
;板子上电和复位后程序开始从位于0x0处开始执行硬件刚刚上电复位后程序从这里开始执行跳转到标?
;为ResetHandler处执行
;1)Thecode,whichconvertstoBig-endian,shouldbeinlittleendiancode.
;2)ThefollowinglittleendiancodewillbecompiledinBig-Endianmode.
;Thecodebyteordershouldbechangedasthememorybuswidth.
;3)Thepseudoinstruction,DCDcan'tbeusedherebecausethelinkergenerateserror.
;总线宽度判?
;DCD用于分配一段字内存单片,并用后面的伪指令初始化
;分配字节由expr个数决定
ASSERT:DEF:ENDIAN_CHANGE
[ENDIAN_CHANGE
ASSERT:DEF:ENTRY_BUS_WIDTH
][ENTRY_BUS_WIDTH=32
bChangeBigEndian;DCD0xea000007
]

[ENTRY_BUS_WIDTH=16
andeqr14,r7,r0,lsl#20;DCD0x0007ea00
]

[ENTRY_BUS_WIDTH=8
streqr0,][r0,-r10,ror#1];DCD0x070000ea
]
|
bResetHandler
]
bHandlerUndef;handlerforUndefinedmode
bHandlerSWI;handlerforSWIinterrupt
bHandlerPabort;handlerforPAbort
bHandlerDabort;handlerforDAbort
b.;reserved0x14
bHandlerIRQ;handlerforIRQinterrupt
bHandlerFIQ;handlerforFIQinterrupt

;@0x20
bEnterPWDN
;大小端判断
ChangeBigEndian
;@0x24
[ENTRY_BUS_WIDTH=32
DCD0xee110f10;0xee110f10=>mrcp15,0,r0,c1,c0,0
DCD0xe3800080;0xe3800080=>orrr0,r0,#0x80;//Big-endian
DCD0xee010f10;0xee010f10=>mcrp15,0,r0,c1,c0,0
]
[ENTRY_BUS_WIDTH=16
DCD0x0f10ee11
DCD0x0080e380
DCD0x0f10ee01
]
[ENTRY_BUS_WIDTH=8
DCD0x100f11ee
DCD0x800080e3
DCD0x100f01ee
]
DCD0xffffffff;swinv0xffffffissimilarwithNOPandrunwellinbothendianmode.
DCD0xffffffff
DCD0xffffffff
DCD0xffffffff
DCD0xffffffff
bResetHandler

;进入掉电模式功能
;1.SDRAM必须在自刷新模式.
;2.所有中断必须屏蔽forSDRAM/DRAMself-refresh.
;3.LCD关闭forSDRAM/DRAMself-refresh.
;4.TheI-cache可能需要开启.
;5.Thelocationofthefollowingcodemayhavenottobechanged.

;voidEnterPWDN(intCLKCON);
EnterPWDN
movr2,r0;r2=rCLKCON
tstr0,#0x8;pOWER_OFFmode?
bneENTER_POWER_OFF

ENTER_STOP
ldrr0,=REFRESH
ldrr3,[r0];r3=rREFRESH
movr1,r3
orrr1,r1,#BIT_SELFREFRESH
strr1,[r0];EnableSDRAMself-refresh

movr1,#16;waituntilself-refreshisissued.maynotbeneeded.
0subsr1,r1,#1
bne%B0

ldrr0,=CLKCON;enterSTOPmode.
strr2,[r0]

movr1,#32
0subsr1,r1,#1;1)waituntiltheSTOPmodeisineffect.
bne%B0;2)OrwaithereuntiltheCPU&Peripheralswillbeturned-off
;EnteringPOWER_OFFmode,onlytheresetbywake-upisavailable.

ldrr0,=REFRESH;exitfromSDRAMselfrefreshmode.
strr3,[r0]

MOV_PC_LR

ENTER_POWER_OFF
;NOTE.
;1)rGSTATUS3shouldhavethereturnaddressafterwake-upfromPOWER_OFFmode.

ldrr0,=REFRESH
ldrr1,[r0];r1=rREFRESH
orrr1,r1,#BIT_SELFREFRESH
strr1,[r0];EnableSDRAMself-refresh

movr1,#16;Waituntilself-refreshisissued,whichmaynotbeneeded.
0subsr1,r1,#1
bne%B0

ldrr1,=MISCCR
ldrr0,[r1]
orrr0,r0,#(7<<17);MakesurethatSCLK0:SCLK->0,SCLK1:SCLK->0,SCKE='L'duringboot-up
strr0,[r1]

ldrr0,=CLKCON
strr2,[r0]

b.;CPUwilldiehere.


WAKEUP_POWER_OFF
;ReleaseSCLKnafterwake-upfromthePOWER_OFFmode.
ldrr1,=MISCCR
ldrr0,[r1]
bicr0,r0,#(7<<17);SCLK0:0->SCLK,SCLK1:0->SCLK,SCKE:l->H
strr0,[r1]

;Setmemorycontrolregisters
ldrr0,=SMRDATA
ldrr1,=BWSCON;BWSCONAddress
addr2,r0,#52;EndaddressofSMRDATA
0
ldrr3,[r0],#4
strr3,[r1],#4
cmpr2,r0
bne%B0

movr1,#256
0subsr1,r1,#1;1)waituntiltheSelfRefreshisreleased.
bne%B0

ldrr1,=GSTATUS3;GSTATUS3hasthestartaddressjustafterPOWER_OFFwake-up
ldrr0,[r1]
movpc,r0

LTORG
;下面是具体的中断处理函数跳转的宏,通过上面的$HandlerLabel的宏定义展开后跳转到对应的中断处理;函数(对于向量中断)
HandlerFIQHANDLERHandleFIQ
HandlerIRQHANDLERHandleIRQ
HandlerUndefHANDLERHandleUndef
HandlerSWIHANDLERHandleSWI
HandlerDabortHANDLERHandleDabort
HandlerPabortHANDLERHandlePabort

;下面这段程序是用来处理非向量中断,具体判断I_ISPR中各位是否置1置1表示目前此中断等待响应(每次只能有一位置1),从最高优先级中断位开始判断,检测到等待服务
;中断就将pc置为中断服务函数首地址
IsrIRQ
subsp,sp,#4;预留返回指针的存储位置
stmfdsp!,{r8-r9}

ldrr9,=INTOFFSET
ldrr9,[r9];载入I_ISR
ldrr8,=HandleEINT0
addr8,r8,r9,lsl#2
ldrr8,[r8]
strr8,[sp,#8]
ldmfdsp!,{r8-r9,pc}

;=======
;ENTRY
;=======
;扳子上电和复位后程序开始从位于0x0执行bResetHandler程序从跳转到这里执行
;板子上电复位后执行几个步骤这里通过标号在注释中加1,2,3....标示标号表示执行顺序
;1.禁止看门狗屏蔽所有中断
ResetHandler
ldrr0,=WTCON;watchdogdisable
ldrr1,=0x0
strr1,[r0]

ldrr0,=INTMSK
ldrr1,=0xffffffff;allinterruptdisable
strr1,[r0]

ldrr0,=INTSUBMSK
ldrr1,=0x7ff;allsubinterruptdisable,2002/04/10
strr1,[r0]

[{FALSE}
;rGPFDAT=(rGPFDAT&~(0xf<<4))|((~data&0xf)<<4);
;Led_Display
ldrr0,=GPFCON
ldrr1,=0x5500
strr1,][r0]
ldrr0,=GPFDAT
ldrr1,=0x10
strr1,[r0]
]
;2.根据工作频率设置pll
;这里介绍一下计算公式
;Fpllo=(m*Fin)/(p*2^s)
;m=MDIV+8,p=PDIV+2,s=SDIV
;Fpllo必须大于20Mhz小于66Mhz
;Fpllo*2^s必须小于170Mhz
;如下面的PLLCON设定中的M_DIVP_DIVS_DIV是取自option.h中
;#elif(MCLK==40000000)
;#definePLL_M(0x48)
;#definePLL_P(0x3)
;#definePLL_S(0x2)
;所以m=MDIV+8=80,p=PDIV+2=5,s=SDIV=2
;硬件使用晶振为10Mhz,即Fin=10Mhz
;Fpllo=80*10/5*2^2=40Mhz
;ToreducePLLlocktime,adjusttheLOCKTIMEregister.
ldrr0,=LOCKTIME
ldrr1,=0xffffff
strr1,[r0]

[PLL_ON_START
;ConfigureMPLL
ldrr0,=MPLLCON
ldrr1,=((M_MDIV<<12)+(M_PDIV<<4)+M_SDIV);Fin=12MHz,Fout=50MHz
strr1,][r0]
]

;Checkifthebootiscausedbythewake-upfromPOWER_OFFmode.
ldrr1,=GSTATUS2
ldrr0,[r1]
tstr0,#0x2
;Incaseofthewake-upfromPOWER_OFFmode,gotoPOWER_OFF_WAKEUPhandler.
bneWAKEUP_POWER_OFF

EXPORTStartPointAfterPowerOffWakeUp
StartPointAfterPowerOffWakeUp
;3.置存储相关寄存器的程序
;这是设置SDRAM,flashROM存储器连接和工作时序的程序,片选定义的程序
;SMRDATAmap在下面的程序中定义
;SMRDATA中涉及的值请参考memcfg.s程序
;具体寄存器各位含义请参考s3c44b0spec
;Setmemorycontrolregisters
ldrr0,=SMRDATA
ldrr1,=BWSCON;BWSCONAddress
addr2,r0,#52;EndaddressofSMRDATA
0
ldrr3,[r0],#4
strr3,[r1],#4
cmpr2,r0
bne%B0

;Initializestacks
blInitStacks
;5.设置缺省中断处理函数
;SetupIRQhandler
ldrr0,=HandleIRQ;Thisroutineisneeded
ldrr1,=IsrIRQ;ifthereisn't'subspc,lr,#4'at0x18,0x1c
strr1,[r0]

;CopyandpasteRWdata/zeroinitializeddata
ldrr0,=|Image$$RO$$Limit|;GetpointertoROMdata
ldrr1,=|Image$$RW$$Base|;andRAMcopy
ldrr3,=|Image$$ZI$$Base|
;6.将数据段拷贝到ram中将零初始化数据段清零跳入C语言的main函数执行到这步结束bootloader初步引导结束
;Zeroinitbase=>topofinitialiseddata
cmpr0,r1;Checkthattheyaredifferent
beq%F2
1
cmpr1,r3;Copyinitdata
ldrccr2,[r0],#4;-->LDRCCr2,[r0]+ADDr0,r0,#4
strccr2,[r1],#4;-->STRCCr2,[r1]+ADDr1,r1,#4
bcc%B1;r12
ldrr1,=|Image$$ZI$$Limit|;Topofzeroinitsegment
movr2,#0
3
cmpr3,r1;Zeroinit
strccr2,[r3],#4
bcc%B3



[:lNOT:THUMBCODE
blMain;Don'tusemain()because......
b.
]

[THUMBCODE;forstart-upcodeforThumbmode
orrlr,pc,#1
bxlr
CODE16
blMain;Don'tusemain()because......
b.
CODE32
]


;functioninitializingstacks
InitStacks
;Don'tuseDRAM,suchasstmfd,ldmfd......
;SVCstackisinitializedbefore
;Undertoolkitver2.5,'msrcpsr,r1'canbeusedinsteadof'msrcpsr_cxsf,r1'
mrsr0,cpsr
bicr0,r0,#MODEMASK;位清零指令,清r0,再附给ro
orrr1,r0,#UNDEFMODE|NOINT
msrcpsr_cxsf,r1;UndefMode
ldrsp,=UndefStack

orrr1,r0,#ABORTMODE|NOINT
msrcpsr_cxsf,r1;AbortMode
ldrsp,=AbortStack

orrr1,r0,#IRQMODE|NOINT
msrcpsr_cxsf,r1;IRQMode
ldrsp,=IRQStack

orrr1,r0,#FIQMODE|NOINT
msrcpsr_cxsf,r1;FIQMode
ldrsp,=FIQStack

bicr0,r0,#MODEMASK|NOINT
orrr1,r0,#SVCMODE
msrcpsr_cxsf,r1;SVCMode
ldrsp,=SVCStack

;USERmodehasnotbeinitialized.

movpc,lr
;TheLRregisterwon'tbevalidifthecurrentmodeisnotSVCmode.

;这是上面提到的对存储寄存器初始化的数据map
LTORG

SMRDATADATA
;Memoryconfigurationshouldbeoptimizedforbestperformance
;Thefollowingparameterisnotoptimized.
;Memoryaccesscycleparameterstrategy
;1)ThememorysettingsissafeparametersevenatHCLK='75Mhz'.
;2)SDRAMrefreshperiodisforHCLK='75Mhz'.

DCD(0+(B1_BWSCON<<4)+(B2_BWSCON<<8)+(B3_BWSCON<<12)+(B4_BWSCON<<16)+(B5_BWSCON<<20)+(B6_BWSCON<<24)+(B7_BWSCON<<28))
DCD((B0_Tacs<<13)+(B0_Tcos<<11)+(B0_Tacc<<8)+(B0_Tcoh<<6)+(B0_Tah<<4)+(B0_Tacp<<2)+(B0_PMC));GCS0
DCD((B1_Tacs<<13)+(B1_Tcos<<11)+(B1_Tacc<<8)+(B1_Tcoh<<6)+(B1_Tah<<4)+(B1_Tacp<<2)+(B1_PMC));GCS1
DCD((B2_Tacs<<13)+(B2_Tcos<<11)+(B2_Tacc<<8)+(B2_Tcoh<<6)+(B2_Tah<<4)+(B2_Tacp<<2)+(B2_PMC));GCS2
DCD((B3_Tacs<<13)+(B3_Tcos<<11)+(B3_Tacc<<8)+(B3_Tcoh<<6)+(B3_Tah<<4)+(B3_Tacp<<2)+(B3_PMC));GCS3
DCD((B4_Tacs<<13)+(B4_Tcos<<11)+(B4_Tacc<<8)+(B4_Tcoh<<6)+(B4_Tah<<4)+(B4_Tacp<<2)+(B4_PMC));GCS4
DCD((B5_Tacs<<13)+(B5_Tcos<<11)+(B5_Tacc<<8)+(B5_Tcoh<<6)+(B5_Tah<<4)+(B5_Tacp<<2)+(B5_PMC));GCS5
DCD((B6_MT<<15)+(B6_Trcd<<2)+(B6_SCAN));GCS6
DCD((B7_MT<<15)+(B7_Trcd<<2)+(B7_SCAN));GCS7
;DCD((REFEN<<23)+(TREFMD<<22)+(Trp<<20)+(Trc<<18)+(Tchr<<16)+REFCNT);Tchrnotusedbit
DCD((REFEN<<23)+(TREFMD<<22)+(Trp<<20)+(Trc<<18)+REFCNT);设置刷新周期

;DCD0x32;SCLKpowersavingmode,ARMcoreburstdisable,BANKSIZE128M/128M
DCD0xb2;SCLKpowersavingmode,ARMcoreburstenable,BANKSIZE128M/128M-11/29/2002

DCD0x30;MRSR6CL='3clk'
DCD0x30;MRSR7
;DCD0x20;MRSR6CL='2clk'
;DCD0x20;MRSR7

ALIGN


AREARamData,DATA,READWRITE
;这里将中断异常向量建立在sdram中
^_ISR_STARTADDRESS
HandleReset#4
HandleUndef#4
HandleSWI#4
HandlePabort#4
HandleDabort#4
HandleReserved#4
HandleIRQ#4
HandleFIQ#4

;Don'tusethelabel'IntVectorTable',
;ThevalueofIntVectorTableisdifferentwiththeaddressyouthinkitmaybe.
;IntVectorTable
HandleEINT0#4
HandleEINT1#4
HandleEINT2#4
HandleEINT3#4
HandleEINT4_7#4
HandleEINT8_23#4
HandleRSV6#4
HandleBATFLT#4
HandleTICK#4
HandleWDT#4
HandleTIMER0#4
HandleTIMER1#4
HandleTIMER2#4
HandleTIMER3#4
HandleTIMER4#4
HandleUART2#4
HandleLCD#4
HandleDMA0#4
HandleDMA1#4
HandleDMA2#4
HandleDMA3#4
HandleMMC#4
HandleSPI0#4
HandleUART1#4
HandleRSV24#4
HandleUSBD#4
HandleUSBH#4
HandleIIC#4
HandleUART0#4
HandleSPI1#4
HandleRTC#4
HandleADC#4

END

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

9月2日消息,不造车的华为或将催生出更大的独角兽公司,随着阿维塔和赛力斯的入局,华为引望愈发显得引人瞩目。

关键字: 阿维塔 塞力斯 华为

加利福尼亚州圣克拉拉县2024年8月30日 /美通社/ -- 数字化转型技术解决方案公司Trianz今天宣布,该公司与Amazon Web Services (AWS)签订了...

关键字: AWS AN BSP 数字化

伦敦2024年8月29日 /美通社/ -- 英国汽车技术公司SODA.Auto推出其旗舰产品SODA V,这是全球首款涵盖汽车工程师从创意到认证的所有需求的工具,可用于创建软件定义汽车。 SODA V工具的开发耗时1.5...

关键字: 汽车 人工智能 智能驱动 BSP

北京2024年8月28日 /美通社/ -- 越来越多用户希望企业业务能7×24不间断运行,同时企业却面临越来越多业务中断的风险,如企业系统复杂性的增加,频繁的功能更新和发布等。如何确保业务连续性,提升韧性,成...

关键字: 亚马逊 解密 控制平面 BSP

8月30日消息,据媒体报道,腾讯和网易近期正在缩减他们对日本游戏市场的投资。

关键字: 腾讯 编码器 CPU

8月28日消息,今天上午,2024中国国际大数据产业博览会开幕式在贵阳举行,华为董事、质量流程IT总裁陶景文发表了演讲。

关键字: 华为 12nm EDA 半导体

8月28日消息,在2024中国国际大数据产业博览会上,华为常务董事、华为云CEO张平安发表演讲称,数字世界的话语权最终是由生态的繁荣决定的。

关键字: 华为 12nm 手机 卫星通信

要点: 有效应对环境变化,经营业绩稳中有升 落实提质增效举措,毛利润率延续升势 战略布局成效显著,战新业务引领增长 以科技创新为引领,提升企业核心竞争力 坚持高质量发展策略,塑强核心竞争优势...

关键字: 通信 BSP 电信运营商 数字经济

北京2024年8月27日 /美通社/ -- 8月21日,由中央广播电视总台与中国电影电视技术学会联合牵头组建的NVI技术创新联盟在BIRTV2024超高清全产业链发展研讨会上宣布正式成立。 活动现场 NVI技术创新联...

关键字: VI 传输协议 音频 BSP

北京2024年8月27日 /美通社/ -- 在8月23日举办的2024年长三角生态绿色一体化发展示范区联合招商会上,软通动力信息技术(集团)股份有限公司(以下简称"软通动力")与长三角投资(上海)有限...

关键字: BSP 信息技术
关闭
关闭