Acaba Register Seviyesinde Kod Yazmak Hala Mantıklı Mı?

Başlatan E-x8, 18 Temmuz 2017, 21:19:16

E-x8

Merhaba

Tekrar ifade edeyim.
"Acaba Register Seviyesinde Kod Yazmak Hala Mantıklı Mı?"

Bunu sormamın nedeni dün ilk defa Datasheet'ten kod yazmış olmam. Daha önceden 5 sn mi alan Arduino ile Serial.println("abc"); kodunu STM32'de denemek istedim. Registerlara bir bakiyim derken sırf USART1 i ile zamazingo yapmak için 3-4 saatimi heba ettim günün sonunda olayların mantığını kavradım. Register neymiş çok daha yakından öğrendim.

İşte tam olarak burada aklıma takılan bir çelişki var, sizlere de danışmak istedim.
Register seviyesinde kod yazmak tamamen bağımsız olmak demek datasheet dışında bir argümana ihtiyacın yok demek bu harika bir his. Fakat kötü yanıda her bir modül için tekrar datasheete dönmek zorunda olunması. Usart için Timer için ADC için vs.. bu çoğaltılabilir.
Ya da bir işlemcinin tüm özellikleri için daha önceden hazır notlarınız var hepsi örnek kodlarıyla duruyor ama işlemciyi değiştirdiğinizde dımdızlak kalmıyor musunuz?
Kendimden örnek vereyim STM32F1 serisi ile çalışıyorum USART için REG tanımlamalarını çıkarttım STM32F4'e STM32F7'ye geçtiğimde dımdızlak kalmıcak mıyım? :)


Hal lib kütüphanesi bunun önüne geçiyor hatta Java gibi tüm seriler için tek bir kod yazıyorsunuz. Acaba REG seviyesinden çıkılmalı mı? Ya da bazı yerler için Hal kullanılmalı mı? Hal lib işlemciyi Arduino lib gibi yoruyor mu?


Bunlar sadece soru görüşlerinizi merak ediyorum. Sizler nasıl kod yazıyorsunuz?

sovalye

Mantikli mi olayi sizin isteginiz ve mecburiyetinize gore degisen birsey. C mi python mi tartismalari gibi sonucsuz kalir. Dusunun ki kod yazarken o register lari bulamayip, FPGA da herseyi flipflop'dan, gatelerden insa etmek zorunda olanlar da var.

baran123

ASM ile yazılan kodlar kodun taşınablirliğini zorlaştırıyor. Ben PIC de registerler ile uğraşmaktan bile sıkıldım (C de)
Spesifik durumlarda ASM ile müdahale edebilirsiniz. ASM de yazabilirsin bu sana kalmış.
Ama kodu taşımak istersen ne yapacaksın ? :)
Heleki farklı bir çipe.
Abooo şenlik var desene !

Okan AKÇA

 Register Seviyesinde  kod yazmak cok mantıklı değil  ancak  biraz daha zaman gerekli derleyicilerin  daha gelişmesi lazım

E-x8

Alıntı yapılan: sovalye - 18 Temmuz 2017, 21:40:02
Mantikli mi olayi sizin isteginiz ve mecburiyetinize gore degisen birsey. C mi python mi tartismalari gibi sonucsuz kalir. Dusunun ki kod yazarken o register lari bulamayip, FPGA da herseyi flipflop'dan, gatelerden insa etmek zorunda olanlar da var.
FPGA nedir hiç bilmiyorum bir bakayım dedim üff.. Anlattığınıza bakılırsa işleri baya bi zor.


Alıntı yapılan: baran123 - 18 Temmuz 2017, 22:58:44
ASM ile yazılan kodlar kodun taşınablirliğini zorlaştırıyor. Ben PIC de registerler ile uğraşmaktan bile sıkıldım (C de)
Spesifik durumlarda ASM ile müdahale edebilirsiniz. ASM de yazabilirsin bu sana kalmış.
Ama kodu taşımak istersen ne yapacaksın ? :)
Heleki farklı bir çipe.
Abooo şenlik var desene !
ASM ile hiç kod yazmadım zor gibi dözüküyor. Sanırım farklı çipe geçince ASM'de oluşan zorluk REG'de de oluşabilir sonuçta farklı çipler bilgileri bambaşka yerlere kaydedebilirler. İşte bende bu yüzden bu konuyu açtım:)

Alıntı yapılan: Okan AKÇA - 18 Temmuz 2017, 23:30:00
Register Seviyesinde  kod yazmak cok mantıklı değil  ancak  biraz daha zaman gerekli derleyicilerin  daha gelişmesi lazım
Sanırım HAL Lib ile STM32 için bir gelişmişlik var diyebilir miyiz?


Aynı kodun Reg ve Hal seviyesi

Kullanımları :
usart1_print("Hello World!\r\n");


void usart1_print(volatile char* s){
	while(*s){
		USART1->DR=*s;
		while(!(USART1->SR&0x00000080));
		*s++;
	}
	while(!(USART1->SR&0x00000040));
}


int pointer_uzunlugu(char* str){
	int sayac = 0;
	while(*str++ != 0){
		sayac++;
	}
	return sayac;
}

void usart1_print(char* str){
	HAL_UART_Transmit_IT(&huart1, (uint8_t*)str, pointer_uzunlugu(str));
}

CLR

ince iş yapanlar için mantıklı, hobiciler/basit işler yapanlar için mantıksız,


Knowledge and Experience are Power

OptimusPrime

#6
Bence hobicide olsan profesyonelde olsan register seviyesine inip kod yazmak vakit kaybindan baska birsey getirmez. zorunda olmadikca o seviyeye inme. yani uretici kullandigin cipin suruculerini vermiyorsa ve illaki o islemci ile calismak zorundaysan tabiki isler degisir. kaldiki cogu uretici artik ucretsiz derleyiciler ve suruculeri bedava temin edip gelistiricilerin isini kolaylastirmaya calisiyor. (kaz gelecek yerden tavuk esirgemiyorlar yani kisacasi) bundan faydalanmak lazim.

fpga de durum biraz daha farkli. ozellikle xilinx ust duzey amaclara hizmet eden (video , haberlesme vb gibi) modulleri kendisi gelistimeyi birakti. bunlari artik farkli firmalar ile anlasip onlar uzerinden lisans satma isine cevirdi. dolayisi ile bu moduller artik ucretsiz degiller. Bu tip modulleride zaten satin almak tekrar tasarlamaktan daha ucuza gelecektir. orasi ayri bir hikaye.
https://donanimveyazilim.wordpress.com || Cihân-ârâ cihân içredir ârâyı bilmezler, O mâhîler ki deryâ içredir deryâyı bilmezler ||

sovalye

Alıntı yapılan: OptimusPrime - 19 Temmuz 2017, 19:15:11
hobicide olsan profesyonelde olsan register seviyesine inip kod yazmak vakit kaybindan baska birsey getirmez.


Forumda kavga çıkarmak için bundan daha güzel bir cümle hayal edemiyorum.
Asm cephesinden gelecek ilk savunma da kesin "Gerçek elektronikçiler donanım seviyesinde kod yazar olur.".
Sonra yüksek seviye diller "Sizin 500 satırda yaptığınız işi ben tek satırda yapıyorum" yazar.
"Yazıyosun da arka planda olanları bilmiyorsun." argümanı ile düşük seviye diller tekrar saldırıya geçer.
"Bilip ne yapacam dünya'da artık kimse bilmiyor" savunması gelir.


Bu noktada tahminen kavga çıkar. Moderatorlerden biri mesajları temizler konu kapanır. Bir amaç için çıkmış her dilin, yöntemin o işi güzelce yaptığını eğer yapamazsa yok olduğu başından kabul etsek de herkes canının istediği gibi kod yazsa ne güzel olur.

E-x8

Kavga çıkmaz niye çıksın.
O zaman önlemi alalım konuyu Hal Lib ile REG seviyesini STM32 için değerlendirelim ki konunun etki alanı biraz daralsın.

OptimusPrime

https://donanimveyazilim.wordpress.com || Cihân-ârâ cihân içredir ârâyı bilmezler, O mâhîler ki deryâ içredir deryâyı bilmezler ||

frederic


Okan AKÇA

Derleyici sorunsuz sekilde derledigi sürece gerekbile duymayiz. Stm için şu an böyle derleyici varmı bilmiyorum.

muhittin_kaplan

Reglerin neler oldugunu gerektiginde nasil yazacagimi bilerek son kutuphaneyi kullanmaya calisirim.

mert3162

Alıntı yapılan: sovalye - 19 Temmuz 2017, 19:51:06

Forumda kavga çıkarmak için bundan daha güzel bir cümle hayal edemiyorum.
Asm cephesinden gelecek ilk savunma da kesin "Gerçek elektronikçiler donanım seviyesinde kod yazar olur.".
Sonra yüksek seviye diller "Sizin 500 satırda yaptığınız işi ben tek satırda yapıyorum" yazar.
"Yazıyosun da arka planda olanları bilmiyorsun." argümanı ile düşük seviye diller tekrar saldırıya geçer.
"Bilip ne yapacam dünya'da artık kimse bilmiyor" savunması gelir.


Bu noktada tahminen kavga çıkar. Moderatorlerden biri mesajları temizler konu kapanır. Bir amaç için çıkmış her dilin, yöntemin o işi güzelce yaptığını eğer yapamazsa yok olduğu başından kabul etsek de herkes canının istediği gibi kod yazsa ne güzel olur.


Hocam forumda cıkacak kavgayı önceden görmüşsünüz ohoo işin bütün heyecanı kaçtı şimdi :)

ASM'ciler ki hepimiz kim olduğunu biliyoruz gelip döşeyecekti 2 sayfa yazıyı buraya şimdi o adam yazmaz bu saatten sonra bu konunun altına
Sonra C'ciler geliceklerdi onlarda asm yazanlar hamal diyecekti.


Kendi yorumum şudur profesyonel iş yapan şirketler(vestel,arçelik,bosch ev aleti üreticileri benim tanıdıklarım en azından) hala register seviyesinde yazar neden ? kullandıkları işlemcinin geliştirilmesi için oluşturulan ekipler bizzat üreticiler tarafından eğitime alınır bu kişi ingilizce olarak eğitimini görür.Gelir kodunu yazmaya başlar hatta üretici kodların büyük çoğunluğunu bile yazar.Artık şirket o kişiden bir revizyon istediğinde kişi bunu yapamaz ise üretici ile direkt temasa geçip işlemcinin yazdığı koda tepki vermediğini söylediğinde işlemcinin hataları tespit edildiğinde üretici işlemciyi bu istekler üzerine revizyona bile alabilir.

Bu şirketler kurumsal bazda anlaşmalı oldukları için üretici bizzat kendi çalışanlarını dönemsel yada uzun süreli çalışma için size tahsis bile edebilir.Kodlar tamamıyle paylaşılabilir aralarında birbirlerinden kod gizleme pek olmaz sebebi yapacağınız yazılımın çekirdek bölümünün zaten onlar tarafından geliştirilmiş olmasıdır.

Ha şöyle bir durum var bu kodlar extra güvenli metodlar ile paylaşılır.ziplenip gönderilmez anlatamayacağım metodlar içerir.Biz ölümlüler bu kodların nasıl döndüğünü pek göremeyiz.

|^^^^^^^^^^^^\ ||\
|__PICPROJE.ORG __
||'""|""\___
| _____________ l | |__|__|___| )
(@!)!(@)"""""**|(@) (@)****|(@)---------

 Üstadlarım nonstradam & Logan

tekosis

Bence ;) register düzeyinde konuya hakim olabilmek ve gerektiğinde bu bilgileri kullanabilmek önemli. Kodlama tercihi işin durumuna göre değişir ama takıldığınız yerde kayıtcılara bakabilmek ve yorumlayabilmek gerek.
İlim ilim bilmektir, ilim kendin bilmektir, sen kendin bilmezsin, bu nice okumaktır.