srec_examples - Bulutta Çevrimiçi

Bu, Ubuntu Online, Fedora Online, Windows çevrimiçi emülatörü veya MAC OS çevrimiçi emülatörü gibi birden fazla ücretsiz çevrimiçi iş istasyonumuzdan birini kullanarak OnWorks ücretsiz barındırma sağlayıcısında çalıştırılabilen srec_examples komutudur.

Program:

ADI


srec_examples - SRecord'un nasıl kullanılacağına ilişkin örnekler

AÇIKLAMA


The srec_cat komut, giriş filtrelerini birleştirme yeteneği nedeniyle çok güçlüdür.
neredeyse sınırsız yollarla. Bu kılavuz sayfası bunlardan birkaçını açıklamaktadır.

Bu kılavuz sayfası, çeşitli girdi dosyalarının, girdi filtrelerinin ve girdilerin nasıl kullanılacağını açıklar.
jeneratörler. Ancak bunlar yalnızca örneklerdir, daha eksiksiz ayrıntılar için bkz. srec_input(1)
manuel sayfa.

The Komutları Hatlar Çok Uzun
Çok kısa komut satırı uzunluk sınırlarına sahip bir işletim sisteminde mahsur kaldıysanız,
takip eden bazı komutlar çok uzun olabilir. Bu handikapı aşabilirsiniz
komut satırınızı bir dosyaya yerleştirmek, diyelim fred.txtve sonra söyle srec_cat(1) bunu okumak için
komut satırının geri kalanı için dosya, bunun gibi

srec_cat @fred.txt

Bu ayrıca yorumlara izin verme avantajına sahiptir ve komut satırınızı yazmanıza izin verir.
birkaç satır üzerinde seçenekler ve hatta komutu daha net hale getirmek için girintiler. Yorumlar
bir " ile başlayın#” ve satırın sonuna kadar uzatın. Boş satırlar yoksayılır.

Tabii ki, her zaman 27'den fazla süredir daha az emen Linux'a yükseltebilirsiniz.
yıl şimdi.

kg Örnekler Aranan
SRecord'u kullanmak için akıllıca bir yolunuz varsa veya
SRecord, bu kılavuz sayfasına katkıda bulunarak herkes için daha faydalı hale getirebilirsiniz.
Örneğinizi bu kılavuz sayfasının sonundaki e-posta adresine bir e-posta ile gönderin.

DÖNÜŞTÜRME DOSYA BİÇİMLER


Şeylerin en basiti srec_cat(1) yapabileceği bir EPROM dosya biçiminden dönüştürmektir.
bir diğeri. Lütfen bu bölümü okurken bunların çoğunu yapabileceğinizi unutmayın.
şeyler aynı anda tek bir komutta. Sadece onları yapmak için ayrı ayrı kırılırlar.
anlaşılması daha kolay.

Intel için Motorola
En basit örneklerden biri, dosyaları Intel hex formatından Motorola S'ye dönüştürmektir.
Kayıt formatı:

srec_cat intel dosyası -bilgi -o srec dosyası

Biçim belirtecinin, tanımladığı dosyanın adının hemen ardından geldiğini unutmayın.
SRecord'un anladığı herhangi iki formatı seçin ve hepsi arasında dönüştürme yapabilir.
(Sadece write olan assembler, BASIC, C ve FPGA çıkışları hariç.)

Motorola için Intel
Diğer yolu dönüştürmek de aynı derecede basittir:

srec_cat srec dosyası -o intel dosyası -Intel

Varsayılan biçim Motorola S-Record biçimidir, bu nedenle daha sonra belirtilmesi gerekmez.
dosya adı.

Farklı Şekiller of the Aynı oluşturulan
Bazı beceriksiz EPROM programcılarının yalnızca bir kısmını uygulaması ne yazık ki yaygındır.
hex dosyalarını temsil etmek için kullanılan spesifikasyonun. Örneğin, bazı derleyiciler
“s19” Motorola verilerini (yani, S1 başlangıç ​​kayıtları, 9 bit ile S16 veri kayıtları) üretin
bazı blok kafalı EPROM programcılarının ısrar etmesi dışında sorun olmaz.
“s37” Motorola verileri (yani, S3 başlangıç ​​kayıtları ile S7 veri kayıtları, 32 bit adres
alanlar).

kullanarak bir Motorola şeklinden diğerine dönüştürmek mümkündür. -Adres-Uzunluk
seçenek:

srec_cat kısa.srec -o uzun.srec -adres-uzunluk=4

Bu komut, çıktıda dört bayt (32 bit) adres kullanmayı söylüyor.

Bu bölüm aynı zamanda Intel hex dosyaları için de geçerlidir, çünkü onlar da seçme yeteneğine sahiptirler.
çeşitli adres genişliklerinden kullanarak bir Intel şeklinden diğerine dönüştürmek için
aynı -Adres-Uzunluk seçenek:

srec_cat i32.hex -o i16.hex -adres-uzunluk=3

Bu komut, çıktıda “i16hex” 20 bitlik bölümlere ayrılmış adreslerin kullanıldığını söylüyor. bir adres uzunluğu
4 varsayılan değerdir (“i32hex” 32 bit doğrusal adresleme) ve 2 adres uzunluğu
"i8hex" 16 bit adresleme isteğinde bulunun.

çizgi Uzunlukları
Zaman zaman bununla baş edemeyen geri zekalı bir EPROM programcısı ile karşılaşacaksınız.
uzun metin satırlarında, satır başına yalnızca 46 karakter olacağını varsayarlar ve
varsayılan satır uzunluklarını gördüklerinde barf srec_cat(1) yazıyor (veya daha kötüsü, bir yığın alın
karalama ve çarpma).

Motorola S-kayıt biçimi tanımı, 255 bayta kadar veri yüküne veya satır satırlarına izin verir.
514 karakterler, artı satır sonlandırma. Tüm EPROM programcıları meli yeterince sahip
büyük satır arabellekleri bu büyük kayıtlarla başa çıkmak için. Çok azı yapar.

-line-uzunluğu seçeneği, maksimum satır uzunluğunu belirtmek için kullanılabilir (
yeni satır) çıktıda kullanılacak. Örneğin, Motorola hex için 16 bayt veri yükü

srec_cat uzun.srec -o kısa.s19 -satır uzunluğu=46

Satır uzunluğu seçeneği, adres uzunluğu seçeneğiyle etkileşime girer, bu nedenle bazıları
özel durumunuz için optimize edin.

Çıktı Engellemek Boyutlar
Arada bir, eski bir aptal EPROM programcısı ile karşılaşacaksınız.
uzun veri kayıtlarıyla başa çıkabilmek için, yalnızca en fazla 16 baytlık veri olacağını varsayıyorlar.
kayıt başına veri ve varsayılan 32 baytlık yükleri gördüklerinde barf srec_cat(1)
yazar (ya da daha kötüsü, arabelleğin aşırı çalışması, üzerinde karalayan uzun bir çimen yürüyüşüne neden olur)
EPROM'u).

Intel onaltılı biçim tanımı, kayıt başına 255 bayta kadar veri yükü verisine izin verir. Tüm
EPROM programcıları meli bu kayıtlarla başa çıkmak için yeterince büyük veri arabelleğine sahip
büyük. İyi şanslar.

-Output-Block-Size seçeneği, üzerinde kullanılacak kayıt veri boyutunu belirtmek için kullanılabilir.
çıktı. Örneğin, 16 bayt veri yüküne sahip Intel hex:

srec_cat uzun.srec -o kısa.hex -intel -obs=16

koymamaya dikkat edin. -obs çıktı dosyası adı ve biçim arasındaki seçenek
belirleyici.

Sadece the Veri, Lütfen
Yalnızca veri kayıtlarıyla başa çıkabilen bazı kemik kafalı EPROM programcıları vardır ve bunlar
başlık kayıtları veya yürütme başlangıç ​​adresi kayıtları ile baş edemiyor. eğer buna sahipsen
sorun, -yalnızca veri seçeneği dışında hemen hemen her şeyi bastırmak için kullanılabilir.
veri. Gerçek etki, elbette, biçime bağlıdır, çünkü bazılarında bunlar yoktur.
yine de özellikler.

The -yalnızca veri seçenek kısa eldir. olabilecek dört özellik vardır. devre dışı or
etkinleştirilmiş ayrı ayrı. Bkz. srec_cat(1) bir açıklama için kılavuz sayfası devre dışı ve
etkinleştirilmiş seçenekleri.

Örneğin, neandertal EPROM programlayıcınız, başlık kayıtlarıyla Motorola hex'e ihtiyaç duyar.
(S0), ancak veri sayısı (S5) kayıtları olmadan. kullanmamak -yalnızca veri seçeneği açık
veri sayısı kaydı, ancak -yalnızca veri seçenek, eksik başlıkta barf var
kayıt. Kullanmak -disable=veri sayımı seçenek, başlık kaydını olduğu gibi bırakırken
veri sayısı kaydının bastırılması.

Veri Başlıkları
The srec_cat(1) komut, her zaman, her zaman, değişmeden başlık kayıtlarından geçmeye çalışır.
onlar mevcut. Hatta onları dosya formatı değişiklikleri boyunca sınıra kadar korumaya çalışır.
dosya biçimleri yeteneğine sahiptir.

Dosya başlığı kaydı yoksa ve bir tane eklemek istiyorsanız veya geçersiz kılmak istiyorsanız
mevcut bir dosya başlığı kaydı, -başlık=dizi seçenek. alıntı yapmanız gerekecek
boşluk veya kabuk meta karakterleri içeriyorsa (kabuktan izole etmek için).

infaz Ana Sayfa Adreslerim
The srec_cat(1) komutu her zaman yürütme başlangıç ​​adreslerinden geçmeye çalışır (genellikle
dosyanın sonunda meydana gelir), mevcut olduklarında. Onlar birlikte ayarlanır
tarafından veri kayıtları ile -telafi etmek filtre. Hatta onları dosya boyunca korumaya çalışır
biçim değişiklikleri, dosya biçimlerinin yapabileceği sınıra kadar.

Yürütme başlangıç ​​adresi kaydı yoksa ve eklemek isterseniz veya dilerseniz
mevcut bir yürütme başlangıç ​​adresi kaydını geçersiz kılmak için -yürütme-başlatma-
adres=numara seçeneği.

Lütfen dikkat: yürütme başlangıç ​​adresi, aşağıdaki ilk adresten farklı bir kavramdır:
verilerinizin hafızası. Bunu, monitör tarafından atlanacak bir "git" adresi olarak düşünün.
altıgen yük tamamlandı. Verilerinizin bellekte başladığı yeri değiştirmek istiyorsanız,
-telafi etmek Filtre.

sabitleme checksum'ları
Bazı gömülü bellenim geliştiricileri, aşağıdakileri üreten tüy beyinli araçlarla doludur.
daha dikkatli EPROM programcı modellerinin kabul etmeyeceği yanlış sağlama toplamları.

Bir dosyadaki sağlama toplamlarını düzeltmek için -yoksay-sağlama toplamları seçenek. Örneğin:

srec_cat bozuk.srec - yoksay-sağlama toplamları -o sabit.srec

sağlama toplamları kırık.srec ayrıştırılır (yoksa hala ve hatadır) ancak
kontrol edilmemiş. Sonuç sabit.srec dosyanın doğru sağlama toplamları var. NS -yoksay-sağlama toplamları
seçenek yalnızca giriş için geçerlidir.

Bu seçenek, Intel hex dahil, sağlama toplamı olan herhangi bir dosya biçiminde kullanılabilir.

Keşfi Gizem Biçimleri
Bak Ne oluşturulan Is Bu? gizemli EPROM'un nasıl keşfedileceği ve dönüştürüleceği hakkında aşağıdaki bölüm
dosya biçimlerini yükleyin.

İKİLİ DOSYALAR


İkili dosyalara ve ikili dosyalardan dönüştürmek mümkündür. Hatta ikili dosyaları karıştırabilirsiniz ve
diğer formatlar aynı anda birlikte srec_cat(1) komut.

Yazı Yazmak İkili dosyalar
Bir hex dosyasını okumanın ve onu ikili dosyaya dönüştürmenin en basit yolu şöyle görünür:

srec_cat fred.hex -o fred.bin -ikili

Bu, Motorola hex dosyasını okur fred.srec ve onu dışarı yazar fred.bin ham olarak
ikili.

Verilerin ikili dosyaya, tarafından belirtilen bayt ofsetinde yerleştirildiğini unutmayın.
hex dosyasındaki adresler. Verilerde boşluklar varsa, bunlar sıfır ile doldurulur.
Bu, elbette, kodun bir noktadan başlayarak yerleştirildiği bağlayıcı çıktısında yaygındır.
hafızada özel bir yer. Örneğin, 0x100000 ile başlayan bir görüntünüz olduğunda,
çıktı ikili dosyasının ilk 1MB'si sıfır olacaktır.

Gibi bir komut kullanarak bu ofseti otomatik olarak iptal edebilirsiniz.

srec_cat fred.hex -offset − -minimum-addr fred.hex -o fred.bin

Yukarıdaki komut, fred.hex en az bellekte dosya daha düşük
adreste fred.hex dosyanın verileri.

Ayrıca bakınız srec_binary(5) ek ayrıntı için kılavuz sayfası.

Okuma İkili dosyalar
İkili bir dosyayı okumanın ve dönüştürmenin en basit yolu şuna benzer

srec_cat fred.bin -ikili -o fred.srec

Bu ikili dosyayı okur fred.bin ve tüm verilerini tekrar bir
Motorola S-Record dosyası.

Çoğu zaman, bu ikili adres alanında tam olarak istediğiniz yerde değildir, çünkü
sıfır adresinde bulunduğu varsayılır. Hareket ettirmeniz gerekiyorsa, -telafi etmek Filtre.

srec_cat fred.bin -ikili -offset 0x10000 -o fred.srec

Ayrıca sıfırla doldurulmuş dosya “deliklerinden” kaçınmanız gerekir. kullanabilirsiniz -mahsul
filtre, kullanabilirsiniz -doldurma Verilerin tam olarak nerede olduğunu bilmiyorsanız filtreleyin.

srec_cat fred.bin -ikili -doldurma 0x00 512 -o fred.srec

Yukarıdaki komut, 512 bayt uzunluğunda veya daha uzun olan sıfır baytlık çalıştırmaları kaldırır. Eğer senin
dosya 1 GB önde gelen sıfır bayt içeriyor, bu yavaş olacak, kullanmak daha iyi olabilir
the dd(1) önce dilimleme ve zar atma komutu.

BİRLEŞTİRME DOSYALAR BİRLİKTE


The srec_cat komut adını UNIX'ten alır kedi(1) komut, kısaltması
"katılmak" veya "katılmak". NS srec_cat komutu EPROM yükleme dosyalarını birleştirir.

Tümü In Bir
EPROM yükleme dosyalarını tek bir dosyada birleştirmek basittir, sadece
ihtiyacınız olan komut satırı:

srec_cat dosya1 dosya2 -o dış dosya

Bu örneğin tümü Motorola S-Record dosyalarıdır, çünkü bu varsayılan biçimdir. Yapabilirsiniz
bir komutta birden çok biçime sahip olmak ve srec_cat(1) çalışmaya devam edecek. sen bile değilsin
aynı formatı çıktı almak zorunda:

srec_cat dosya1 -spektrum dosya2 -needham
-o dış dosya -işaretler

Bunların hepsi eski biçimlerdir, ancak Intel'i karıştırmak ve eşleştirmek nadir değildir.
ve Motorola formatları bir projede.

Süzme Sonra birleştirme
İki veri grubunu birleştirmek ve ardından bir filtre uygulamak istediğiniz zamanlar vardır.
birleştirilmiş sonuca. Bunu yapmak için parantez kullanırsınız.

srec_cat
'('
dosyada -0xFFF0 0x10000'i hariç tut
- 0xFFF0 0xFFF8 oluştur -tekrar‐dize 'Muz'
')'
-b-e-uzunluk 0xFFF8 4
-b-e-sağlama toplamı-neg 0xFFFC 4 4
-o dış dosya

Yukarıdaki örnek komut, bir girdi dosyasını sıralar (oluşturulan veri alanı hariç tutularak)
sabit bir dize ile. Bu sıralı girdi daha sonra 4 baytlık bir uzunluk eklemek için filtrelenir ve
4 baytlık bir sağlama toplamı.

birleştirme Uçtan Uca
EPROM yükleme dosyalarındaki adres aralıkları çoğu zaman çakışacaktır. alacaksın
yaparlarsa hata. Her iki dosya da sıfır adresinden başlıyorsa, çünkü her biri bir
ayrı EPROM, ofset filtresini kullanmanız gerekebilir:

srec_cat dosya1
dosya2 -ofset 0x80000
-o dış dosya

Bazen iki dosyanın birbirini tam olarak takip etmesini istersiniz, ancak ne olduğunu bilemezsiniz.
önceden ofset:

srec_cat dosya1
dosya2 -offset -maksimum-addr dosya1
-o dış dosya

Daha önce (0x80000) bir sayının olduğu yerde, şimdi bir hesaplama olduğuna dikkat edin (-maksimum‐
adr dosya1). Bu, çoğu yerde bir sayının kullanılması mümkündür (ayrıca -minimum-addr ve
-Aralık).

KIRMIZI L' VERİ


Bir EPROM yükleme dosyasını kopyalamak, saklanacak adresleri ve adresleri seçmek mümkündür.
atmak.

Ne için tutmak
Yaygın bir etkinlik, verilerinizi EPROM konumunuza uyacak şekilde kırpmaktır. Bağlayıcınız ekleyebilir
ilgilenmediğiniz diğer çöpler, örneğin RAM konumunda. Bu örnekte,
1MB sınırında 2MB EPROM var:

srec_cat dosyada -kırp 0x200000 0x300000
-o dış dosya

Tüm adres aralıkları için alt sınır kapsayıcıdır, üst sınır dışlayıcıdır. Eğer sen
onları çıkarın, bayt sayısını alırsınız.

Adres Dengelemek
Muhtemelen, aptal bir EPROM programlayıcınız var ve EPROM görüntüsü
sıfırdan başlamaz. Sadece nerede olduğunu öğrenmek için yok bellekte başlat,
srec_info(1) komut:

$ srec_info örnek.srec
Biçim: Motorola S-Record
Başlık: ekstra-whizz araç zinciri bağlayıcısı
Yürütme Başlangıç ​​Adresi: 0x00200000
Veri: 0x200000 - 0x32AAEF
$

Bağlayıcı komut dosyasını kesmek yerine, adresleri dengeleyin:

srec_cat dosyada -kırp 0x200000 0x300000 -ofset −0x200000
-o dış dosya

Verilen ofsetin negatif'den bu değeri çıkarma etkisine sahiptir.
çıktı kayıt adreslerini oluşturmak için giriş kayıtlarındaki tüm adresler. Bu durumda,
görüntüyü sıfıra geri kaydırma.

Bu örnek ayrıca giriş filtrelerinin nasıl zincirlenebileceğini gösterir: ilk olarak
kırpma ve ardından ofset, hepsi bir komutta, geçici dosyalara gerek kalmadan.

Tüm yapmak istediğiniz veriyi sıfır adresinden başlayacak şekilde dengelemekse, bu olabilir.
otomatiktir, böylece minimum adresi önceden bilmek zorunda kalmazsınız. srec_cat's
komut satırında bazı şeyleri hesaplama yeteneği:

srec_cat dosyada -offset − -minimum-addr dosyada
-o dış dosya

Eksi işaretinin her iki yanındaki boşluklara dikkat edin, bunlar zorunludur.

Ne için Atmak Uzakta
Küçük bir adres aralığını bir EPROM yükleme dosyasından çıkarmanız gereken zamanlar vardır,
küçük bir adres aralığı tutmak istemek yerine. NS -hariç tutmak filtre için kullanılabilir
Bu amaç.

Örneğin, bir seri numarasının bulunduğu adres aralığını hariç tutmak istiyorsanız,
gömülü aygıt tutulur, 0x20'de 0x100 bayt diyelim, şöyle bir komut kullanırsınız:

srec_cat girdi.srec -0x100 0x120 hariç tut -o çıktı.srec

The çıktı.srec dosya gerekli konumlarda verilerde bir delik olacaktır.

Her ikisine de sahip olabileceğinizi unutmayın -mahsul ve -hariç tutmak hangisi çalışıyorsa aynı komut satırında
sizin durumunuz için daha doğal.

kesintili Adres Aralıkları
Adres aralıklarının tek bir aralık olması gerekmez, kullanarak bir adres aralığı oluşturabilirsiniz.
tek bir çiftten fazla.

srec_cat dosyada -kırp 0x100 0x200 0x1000 0x1200
-o dış dosya

Bu filtre, 0x100..0x1FF'den gelen verilerle ve 0x1000..0x1200'den gelen verilerle sonuçlanır.
aracılığıyla, geri kalanı atılır. Bu, bir zinciri zincirlemekten daha verimlidir. -mahsul ve bir
-hariç tutmak birlikte filtreleyin.

HAREKETLİ BİR ŞEYLER ÇEVRESİNDE


Ayrıca veri kayıtlarının adreslerini hem ileriye hem de geriye doğru değiştirmek mümkündür.
Veri kayıtlarının belleğe yerleştirildiği yerleri yeniden düzenlemek de mümkündür.

Dengelemek Filtrele
The -ofset=numara filtre kayıtların adresleri üzerinde çalışır. Sayı pozitif ise
adresler bellekte o kadar çok bayt daha yükseğe taşınır, negatif değerler daha aşağı taşınır.

srec_cat dosyada -kırp 0x200000 0x300000 -ofset −0x200000
-o dış dosya

Yukarıdaki örnek, 1x0'deki 200000MB veri bloğunu sıfıra indirir (ofset
negatif) ve verilerin geri kalanını atar.

Bayt Değişim
Verilerdeki baytların değiştirilmesinin gerektiği zamanlar vardır, bunlar arasında büyük
genellikle endian ve küçük-endian verileri.

srec_cat dosyada -byte-swap 4 -o dış dosya

Bu, baytları 32 bitlik değerlerde (4 bayt) tersine çevirir. Varsayılan, bir genişlik sağlamazsanız,
16 bitlik değerlerde (2 bayt) baytları tersine çevirmektir. Aslında herhangi bir garip değeri kullanabilirsiniz
2'nin gücü olmak zorunda bile değil. Belki 64 bit (8 bayt) faydalı olabilir.
bir gün.

İkili Çıktı
Boşluklar sıfırlarla dolu olduğundan, çıktıda ikili dosyalara dikkat etmeniz gerekir.
100 bit adresli belleğin en üstünde bulunan 32 kB programınız 4 GB'lık bir dosya oluşturacaktır. Görmek
srec_binary(5) genellikle -telafi etmek Filtre.

Bölme an Resim
16 bitlik bir veri yolunuz varsa ancak ürün yazılımınızı tutmak için iki adet 8 bitlik EPROM kullanıyorsanız,
kullanarak çift ve tek görüntüleri oluşturabilirsiniz. -Bölmek filtre. varsayarsak
ürün yazılımı içindedir bellenim.hex dosya, aşağıdakileri kullanın:

srec_cat üretici yazılımı.hex -split 2 0 -o üretici yazılımı.even.hex
srec_cat üretici yazılımı.hex -split 2 1 -o üretici yazılımı.odd.hex

Bu, gerekli iki EPROM görüntüsüyle sonuçlanacaktır. Çıkış adreslerinin
çoklu bölmeye bölünür, bu nedenle EPROM görüntüleriniz belirli bir ofsetteyse (örneğin
Aşağıdaki örnekte 0x10000), ofseti kaldırmanız ve ardından değiştirmeniz gerekir...

srec_cat ürün yazılımı.hex
-ofset −0x10000 -bölme 2 0
-ofset 0x10000 -o üretici yazılımı.even.hex
srec_cat ürün yazılımı.hex
-ofset −0x10000 -bölme 2 1
-ofset 0x10000 -o üretici yazılımı.odd.hex

Birden çok filtre uygulama yeteneğinin, aksi takdirde çok fazla olan şeyi nasıl basitleştirdiğine dikkat edin.
daha uzun senaryo

Çizgi
için ikinci bir kullanım -Bölmek filtre bellek şeritlemedir.

Bayt genişliğinde parçalara ayırmanız gerekmez, diğer boyutları seçebilirsiniz. Yaygındır
32 bit genişliğindeki verileri iki 16 bitlik geniş veri kümesine dönüştürmek istiyorum.

srec_cat üretici yazılımı.hex -split 4 0 2 -o üretici yazılımı.01.hex
srec_cat üretici yazılımı.hex -split 4 2 2 -o üretici yazılımı.23.hex

Bunu anlamak nispeten basittir, ancak daha geniş şeritler kullanabilirsiniz.

Bu sonraki örnekte, donanım 512 baytlık blokların 4 arasında dönüşümlü olmasını gerektirir.
EPROM'lar. 4 görüntünün oluşturulması aşağıdaki gibi yapılır:

srec_cat üretici yazılımı.hex -bölünmüş 0x800 0x000 0x200 -o üretici yazılımı.0.hex
srec_cat üretici yazılımı.hex -bölünmüş 0x800 0x200 0x200 -o üretici yazılımı.1.hex
srec_cat üretici yazılımı.hex -bölünmüş 0x800 0x400 0x200 -o üretici yazılımı.2.hex
srec_cat üretici yazılımı.hex -bölünmüş 0x800 0x600 0x200 -o üretici yazılımı.3.hex

Asimetrik Çizgi
Şeritlemenin daha tuhaf bir örneği, mikroçip dsPIC33F mikro denetleyicisidir.
garip bellek depolama düzeni ve olması gereken bir adreste 3 bayt depolayabilirler
sadece 2 bayt içerir. Sonuç, üst baytı (küçük
endian) ve tüm adresler çipte olduklarından iki katına çıkar. İşte bir
örnek:

S1130000000102000405060008090A000C0D0E0098
S1130010101112001415160018191A001C1D1E00C8
S1130020202122002425260028292A002C2D2E00F8
S1130030303132003435360038393A003C3D3E0028

Yalnızca 00/3 önemli bayt bırakarak 4 dolgu baytından kurtulmak için şunu da kullanırsınız:
ek özelliği ile bölünmüş filtre genişlik argüman, bunun gibi:

srec_cat example.srec -böl 4 0 3 -o no_dross.srec

Bu, 00 dolgu baytının kaldırıldığı bir dosyayla sonuçlanır. Şuna benziyor:

S113000000010204050608090A0C0D0E1011121451
S1130010151618191A1C1D1E2021222425262829EC
S11300202A2C2D2E30313234353638393A3C3D3E87

Adreslerin de 3/4 boyutunda olduğuna dikkat edin. kullanarak bunu tersine çevirebilirsiniz.
-bölünmemiş ve -doldur=0 filtreler.

ayırma Fotoğraflar
Bölünmemiş filtre, bölünmüş filtrenin etkilerini tersine çevirmek için kullanılabilir. Şuna dikkat edin:
adres aralığı, şeritler arasında delikler bırakarak genişletilir. Tüm şeritleri kullanarak,
tüm giriş, herhangi bir delik olmadan yeniden birleştirilir.

srec_cat -o ürün yazılımı.hex
firmware.even.hex -bölünmemiş 2 0
firmware.odd.hex -bölünmemiş 2 1

Yukarıdaki örnek, önceki 16 bitlik veri yolu örneğini tersine çevirir. Genel olarak, bölünmezsin
böldüğünüz aynı parametrelerle.

DOLGU L' BOŞLAR


Genellikle EPROM yükleme dosyalarında derleyici ve bağlayıcının yaptığı yerlerde "delikler" bulunur.
hiçbir şey koymayın. Bazı amaçlar için bu tamamdır ve diğer amaçlar için bir şey
delikler hakkında yapılmalıdır.

The Doldurmak Filtrele
Verilerinizin yalan söylemediği boşlukları doldurmanız mümkündür. en basit örneği
bu, tüm EPROM'u doldurur:

srec_cat dosyada -doldur 0x00 0x200000 0x300000 -o dış dosya

Bu örnek, varsa boşlukları sıfırlarla doldurur. Bir aralık belirtmelisiniz -
32 bit adres alanı, her şeyi doldurur Kocaman dosyaları yükleyin.

Yalnızca verilerinizdeki boşlukları doldurmak istiyorsanız ve tüm EPROM'u doldurmak istemiyorsanız,
deneyin:

srec_cat dosyada -doldur 0x00 -üzerinden dosyada -o dış dosya

Bu örnek, bir adres aralığının belirtilebildiği her yerde,
-bitmiş ve -içinde seçenekler kullanılabilir.

Doldurma the Boşluklar
Bir EPROM görüntüsünü bir çipten okuduktan sonra “doldurma” ihtiyacı yaygındır. Genellikle,
0xFF ile doldurulmuş tüm deliklere sahip olacak (programlamadığınız EPROM alanları
onları geri okuduğunuzda 0xFF olarak).

Verilerdeki tüm 0xFF baytlarından kurtulmak için bu filtreyi kullanın:

srec_cat dosyada -doldurma 0xFF -o dış dosya

Bu kurtulacak herşey 0xFF baytları, orada gerçekten istedikleriniz de dahil.
Bununla başa çıkmanın iki yolu vardır. İlk olarak, minimum çalışma uzunluğu belirtebilirsiniz.
doldurmamak:

srec_cat dosyada -doldurma 0xFF 5 -o dış dosya

Bu, 1 ila 4 baytlık 0xFF çalışmalarının uygun olduğunu ve yalnızca bir delik oluşturulması gerektiğini söylüyor.
arka arkaya 5 veya daha fazla 0xFF baytlık çalıştırmalar için. İkinci yöntem, yeniden doldurmaktır.
ara boşluklar:

srec_cat dış dosya -doldur 0xFF -over dış dosya
-o dış dosya2

Hangi yöntemi seçeceğiniz, ihtiyaçlarınıza ve EPROM'unuzdaki verilerin şekline bağlıdır.
Her iki tekniği de birleştirmeniz gerekebilir.

Adres Aralık Dolgu malzemesi
Bazı veri biçimleri 16 bit genişliğindedir ve uygunsa 0xFF bayt ile otomatik olarak doldurulur.
veride olmayan bir kelimenin diğer yarısını doldurmak için gereklidir. ihtiyacın olursa
farklı bir değerle doldurun, şöyle bir komut kullanabilirsiniz:

srec_cat dosyada -0x0A'yı doldur
-içinde dosyada -aralık dolgusu 2
-o dış dosya

Bu, doldurma filtresine giriş dosyasının ayrıntılarından hesaplanan bir adres aralığı verir.
Adres aralığı, verinin kapsadığı tüm adres aralıklarıdır. dosyada, Genişletilmiş
aşağı doğru (gerekirse) her alt aralığın başlangıcında 2 baytlık çoklu ve genişletilmiş
yukarıya (gerekirse) her alt aralığın sonunda 2 bayt katına kadar. Bu da işe yarar
daha büyük katlar için, örneğin 1 kB'lik flash yongaların sayfa sınırları. Bu adres aralığı dolgusu
bir adres aralığının gerekli olduğu her yerde çalışır.

Doldurmak ile telif hakkı
EPROM'unuzun kullanılmayan kısımlarını tekrar eden bir telif hakkı mesajı ile doldurmak mümkündür.
EPROM'larınızı tersine çevirmeye çalışan herkes, telif hakkı bildirimini şurada görecek:
onların altıgen editörü.

Bu, biri bir veri dosyasından ve diğeri
anında oluşturulur.

srec_cat dosyada
-generate '(' 0 0x100000 -eksi -içinde dosyada ')'
-repeat‐string 'Telif Hakkı (C) 1812 Tchaikovsky. '
-o dış dosya

Veri üretimi için adres aralığına dikkat edin: bu, cihazınızın adres aralığını alır.
EPROM, bu durumda 1'dan başlayarak 0MB'dir ve EPROM tarafından kullanılan adres aralıklarını çıkarır.
giriş dosyası.

Bunu mevcut yılla birlikte yazmak istiyorsanız (1812 biraz güncel olmadığı için) kullanın.
kabuğun çıktı ikamesi (geri tikler) yeteneği:

srec_cat dosyada
-generate '(' 0 0x100000 -eksi -içinde dosyada ')'
-repeat‐string "Telif Hakkı (C) `tarih +%Y` Çaykovski. "
-o dış dosya

Belirtilen dize, tüm delikler dolana kadar tekrar tekrar tekrarlanır.

kafa karıştıran ile Gürültü
Bazen gerçek verilerin nerede olduğunu gizlemek için EPROM görüntülerinizi gürültüyle doldurmak istersiniz.
durur ve başlar. ile yapabilirsiniz -rastgele doldurma Filtre.

srec_cat dosyada -rastgele doldurma 0x200000 0x300000
-o dış dosya

Aynı şey gibi çalışır -doldurmak filtre, ancak sabit bir bayt yerine rastgele sayılar kullanır
değeri.

Doldurmak İle 16 bit Kelimeler
Görüntüyü sabit bir bayt değeriyle doldurduğunuzda çalışmaz ve sabit bir değere ihtiyacınız vardır.
Bunun yerine 16 bitlik kelime değerini kullanın. -tekrar-veri keyfi olarak uzun süren jeneratör
dolgu deseni olarak kullanılacak bayt dizisi:

srec_cat dosyada
-generator '(' 0x200000 0x300000 -eksi -içinde dosyada ')'
-tekrar-veri 0x1B 0x08
-o dış dosya

Jeneratörün adres aralığının bir kez daha kullanıcı tarafından işgal edilen adres aralıklarından nasıl kaçındığına dikkat edin.
the dosyada'nin verileri. Endian-ness'i kendin almalısın.

EKLEME SABİT VERİ


Zaman zaman sabit verileri veya sizin tarafınızdan üretilmeyen verileri eklemek isteyeceksiniz.
derleyici veya montajcı, EPROM yükleme resimlerinize.

İkili Anlamına geliyor kelimesi kelimesine
Basit bir yol, istenen bilgiyi bir dosyada bulundurmaktır. Dosyayı eklemek için
içeriği tam anlamıyla, hiçbir biçim yorumu olmadan, ikili giriş formatı:

srec_cat dosyada -ikili -o dış dosya

Muhtemelen bir kullanmak gerekli olacaktır. ofset verileri istediğiniz yere taşımak için filtre
aslında görüntü içinde istiyorum:

srec_cat dosyada -ikili -offset 0x1234 -o dış dosya

Standart girdiyi bir veri kaynağı olarak kullanmak da mümkündür;
senaryolaştırılıyor. Örneğin, bir EPROM yükleme dosyasına güncel tarih ve saati eklemek için,
bir boru kullanabilirsiniz:

tarih | srec_cat - -bin -offset 0xFFE3 -o dış dosya

Özel dosya adı “-”, standart girdiden okumak anlamına gelir. çıktısı tarih
komut her zaman 29 karakter uzunluğundadır ve gösterilen uzaklık onu bir
64KB EPROM görüntüsü.

tekrarlanan bir Zamanlar
The Doldurmak ile telif hakkı yukarıdaki bölüm, bir dizginin tekrar tekrar nasıl tekrarlanacağını gösterir. Biz
bir dize eklemek için tek bir tekrar kullanabilir.

srec_cat -0xFFE3 0x10000 oluştur -tekrarlama-dize "'tarih'"
-o dış dosya

Veri üretimi için adres aralığının, verinin uzunluğuyla tam olarak nasıl eşleştiğine dikkat edin.
tarih(1) çıktı boyutu. Elbette, giriş dosyanızı yukarıdakilere ekleyebilirsiniz. srec_cat(1)
EPROM görüntünüzü tarih ve saatle birlikte sıraya koyma komutu.

takma A Uzun
Başka bir olasılık da EPROM imajınıza Subversion taahhüt numarasını eklemektir. Bunda
örneğin, 4x0 adresinde aa 0008 baytlık küçük endian değeri ekliyoruz. NS
Subversion taahhüt numarası $sürüm bu örnekte kabuk değişkeni:

srec_cat -generate 0x0008 0x000C -l-e-sabit $sürüm 4
dosyada -0x0008 0x000C'yi hariç tut
-o dış dosya

Girişte sürüm numarasının yer aldığı bir delik olduğundan emin olmak için bir filtre kullandığımızı unutmayın.
gider, linker oraya bir şey koyarsa diye.

VERİ HAKKIMIZDA L' VERİ


Çıktıya veriler hakkında çeşitli veriler eklemek mümkündür.

checksum'ları
The -big-endian-sağlama-negatif verileri toplamak için filtre kullanılabilir ve ardından
toplamın veriye negatifi. Bu, sıfıra toplama etkisine sahiptir.
Toplam genişliğin eklenen değer genişliğiyle eşleşmesi koşuluyla, sağlama toplamının kendisi toplanır.

srec_cat dosyada
-kırp 0 0xFFFFFC
-rastgele doldurma 0 0xFFFFFC
-b-e-sağlama toplamı-neg 0xFFFFFC 4 4
-o dış dosya

Bu örnekte, en düşük megabayt bellekte bir EPROM'umuz var. -kırpma filtresi
yalnızca EPROM içindeki verileri toplamamızı sağlar, başka hiçbir yerde değil. NS
-rastgele doldurma filtresi, verilerde kalan boşlukları rastgele değerlerle doldurur. Son olarak, -b-
e-sağlama toplamı-neg filtresi, sonuncuya büyük-endian biçiminde bir 32 bit (4 bayt) sağlama toplamı ekler
EPROM görüntüsünün 4 baytı. Doğal olarak, bu filtrenin küçük bir endian versiyonu vardır.
iyi.

Katıştırılmış kodunuz, aşağıdakine benzer C kodunu kullanarak EPROM'u kontrol edebilir:

unsigned long *başlangıç ​​= (unsigned long *)0;
unsigned long *end = (signed long *)0x100000;
işaretsiz uzun toplam = 0;
while (başlangıç ​​< bitiş)
toplam += *başlangıç++;
eğer (toplam != 0)
{
Hata
}

The -big-endian-sağlama-bitnot sağlama toplamı üzerinden toplama dışında filtre benzerdir
tamamı bir bitlik (-1) bir değer vermelidir. Örneğin, uzun yerine şort kullanmak:

srec_cat dosyada
-kırp 0 0xFFFFFE
-doldur 0xCC 0x00000 0xFFFFFE
-b-e-sağlama toplamı-neg 0xFFFFFE 2 2
-o dış dosya

Doğru endian-ness filtresini seçtiğinizi varsayarsak, gömülü kodunuz EPROM'u kontrol edebilir.
aşağıdakine benzer bir C kodu kullanarak:

unsigned short *başlangıç ​​= (signed short *)0;
imzasız kısa *son = (imzasız kısa *)0x100000;
işaretsiz kısa toplam = 0;
while (başlangıç ​​< bitiş)
toplam += *başlangıç++;
if (toplam != 0xFFFF)
{
Hata
}

Ayrıca, var -b-e-sağlama toplamı-pozitif filtre ve eşleşen bir küçük endian filtre,
C'de bir eşitlik testi kullanılarak kontrol edilecek olan basit toplamı ekler.

srec_cat dosyada
-kırp 0 0xFFFFFF
-doldur 0x00 0x00000 0xFFFFFF
-b-e-sağlama toplamı-neg 0xFFFFFF 1 1
-o dış dosya

Doğru endian-ness filtresini seçtiğinizi varsayarsak, gömülü kodunuz EPROM'u kontrol edebilir.
aşağıdakine benzer bir C kodu kullanarak:

imzasız karakter *başlangıç ​​= (işaretsiz karakter *)0;
imzasız karakter *son = (imzasız karakter *)0xFFFFF;
işaretsiz karakter toplamı = 0;
while (başlangıç ​​< bitiş)
toplam += *başlangıç++;
if (toplam != *son)
{
Hata
}

8 bitlik durumda, büyük endian veya küçük endian kullanmanız fark etmez.
Filtre.

Hızlı altıgen döküm
“Hex-dump” çıktı biçimini kullanarak verilerinizin sağlama toplamına bakabilirsiniz. Bu
hesaplanan değerlere bakmak veya bir hata ayıklamak için kullanışlıdır. srec_cat(1) önce komut
bir senaryoda ölümsüzleştiriyor.

srec_cat dosyada
-kırp 0 0x10000
-doldur 0xFF 0x0000 0x10000
-b-e-sağlama toplamı-neg 0x10000 4
-kırp 0x10000 0x10004
-o - -altılık döküm

Bu komut dosyada okur, verileri sağlama toplamını yapar ve sağlama toplamını 0x10000'e yerleştirir.
sonucu yalnızca sağlama toplamını içerecek şekilde kırpar ve ardından sağlama toplamını
klasik bir onaltılık döküm biçiminde standart çıktı. Özel dosya adı “-” şu anlama gelir:
Bu bağlamda “standart çıktı”.

Halkalı fazlalık Çekler
Basit toplamsal sağlama toplamlarının, hatalarla ilgili bir takım teorik sınırlamaları vardır.
tespit edebilirler ve edemezler. CRC yöntemlerinin daha az sorunu vardır.

srec_cat dosyada
-kırp 0 0xFFFFFC
-doldur 0x00 0x00000 0xFFFFFC
-b-e-crc32 0xFFFFFC
-o dış dosya

Yukarıdaki örnekte, en düşük megabayt bellekte bir EPROM'umuz var. NS -mahsul filtre
yalnızca EPROM içindeki verileri toplamamızı sağlar, başka hiçbir yerde değil. NS -doldurmak
filtre, verilerde kalan boşlukları doldurur. Son olarak, -b-e-sağlama toplamı-neg filtre ekler bir
EPROM görüntüsünün son 32 baytında big-endian formatında 4 bit (4 bayt) sağlama toplamı.
Doğal olarak, bu filtrenin küçük bir endian versiyonu da var.

Sağlama toplamı, endüstri standardı 32 bit CRC kullanılarak hesaplanır. Çünkü SRecord
açık kaynak, nasıl çalıştığını görmek için her zaman kaynak kodunu okuyabilirsiniz. olmayan birçok var
Bu kodun GPL versiyonları internette mevcuttur ve gömmek için uygundur.
tescilli ürün yazılımı.

Ayrıca 16 bitlik bir CRC de mevcuttur.

srec_cat dosyada
-kırp 0 0xFFFFFE
-doldur 0x00 0x00000 0xFFFFFE
-b-e-crc16 0xFFFFFE
-o dış dosya

Sağlama toplamı, CCITT formülü kullanılarak hesaplanır. SRecord açık kaynak olduğundan,
nasıl çalıştığını görmek için her zaman kaynak kodunu okuyabilir. GPL olmayan birçok sürümü vardır.
bu kod İnternette mevcuttur ve tescilli bellenime gömmek için uygundur.

“Hex-dump” çıktı formatını kullanarak verilerinizin CRC'sine bakabilirsiniz.

srec_cat dosyada
-kırp 0 0x10000
-doldur 0xFF 0x0000 0x10000
-b-e-crc16 0x10000
-kırp 0x10000 0x10002
-o - -altılık döküm

Bu komut dosyada okur, verilerin CRC'sini hesaplar ve CRC'yi
0x10000, sonucu yalnızca CRC'yi içerecek şekilde kırpar ve ardından sağlama toplamını
klasik bir onaltılık döküm biçiminde standart çıktı.

Nerede Is My Veri?
EPROM görüntünüzün içine eklemek isteyebileceğiniz birkaç özelliği vardır.
verileri.

srec_cat dosyada -b-e-minimum 0xFFFE 2 -o dış dosya

Yukarıdaki örnek, verilerin minimum adresini ekler (düşük Su) olarak verilere
0xFFFE adresinde büyük endian düzende iki bayt. Bu, minimumun kendisini içerir. Eğer
veriler, belirtilen adreste zaten bayt içeriyorsa, bir hariç tutma filtresi kullanmanız gerekir.
Bayt sayısı varsayılan olarak 4'tür.

Ayrıca, var -l-e-minimum küçük endian değerleri eklemek için filtre ve iki tane daha
denilen filtreler -b-e-özel-minimum ve -l-e-özel-minimum içermeyen
minimum veri adresinin hesaplanmasında minimum kendisi.

srec_cat dosyada -b‐e‐maksimum 0xFFFFFC 4 -o dış dosya

Yukarıdaki örnek, verilerin maksimum adresini ekler (yüksek Su + 1, Tıpkı
adres aralıkları) 0xFFFFFC adresinde büyük endian düzende dört bayt olarak verilere.
Bu, maksimumun kendisini içerir. Veri zaten verilen bayt içeriyorsa
adresini kullanmanız gerekir. -hariç tutmak filtre. Bayt sayısı varsayılan olarak 4'tür.

Ayrıca, var -l-e-maksimum küçük endian değerleri eklemek için filtre ve iki tane daha
denilen filtreler -b-e-özel-maksimum ve -l-e-özel-maksimum içermeyen
maksimum veri adresinin hesaplanmasında maksimum kendisi.

srec_cat dosyada -b-e-uzunluk 0xFFFFFC 4 -o dış dosya

Yukarıdaki örnek, verilerin uzunluğunu ekler (yüksek Su + 1 - düşük Su) içine
0xFFFFFC adresinde büyük endian düzende dört bayt olarak veri. Bu uzunluk içerir
kendisi. Veriler uzunluk konumunda zaten bayt içeriyorsa, bir
-hariç tutmak filtre. Bayt sayısı varsayılan olarak 4'tür.

Ayrıca, var -l-e-uzunluk biraz endian uzunluğu eklemek için filtre ve -olmak-
özel uzunluk ve -l-e-özel uzunluk uzunluğun kendisini içermeyen filtreler
hesaplamada.

Ne oluşturulan Is Bu?
kullanarak bir EPROM yükleme dosyası hakkında çeşitli bilgiler edinebilirsiniz. srec_info(1)
emretmek. Örneğin:

$ srec_info örnek.srec
Biçim: Motorola S-Record
Başlık: "http://srecord.sourceforge.net/"
Yürütme Başlangıç ​​Adresi: 00000000
Veri: 0000 - 0122
0456 - 0FFF
$

Bu örnek, dosyanın bir Motorola S-Record olduğunu gösterir. Dosya başlığındaki metin,
yürütme başlangıç ​​adresiyle birlikte yazdırılır. Son bölüm adresi gösterir
veri içeren aralıklar (her alt aralığın üst sınırı indeğil, kapsayıcı
exkomut satırında kullanılan kapsamlı form.

$ srec_info bazı tuhaf dosya.hex -tahmin
Biçim: Signetics
Veri: 0000 - 0122
0456 - 0FFF
$

Yukarıdaki örnek, EPROM yükleme dosya biçimini tahmin etmektedir. Yanılmaz değil ama genellikle
doğru anlar. Kullanabilirsiniz -tahmin her yerde açık bir format verirsiniz, ancak
daha yavaş olma eğilimindedir ve bu nedenle tavsiye edilmez. Ayrıca, otomatik yapı için
sistemlerde, mümkün olduğunca erken ciddi hatalar istiyorsunuz; bir dosya beklendiği gibi değilse
biçiminde, barf olmasını istiyorsunuz.

YÖNLENDİRME L' VERİ


Veri baytlarının değerlerini birkaç şekilde değiştirmek mümkündür.

srec_cat dosyada -ve 0xF0 -o dış dosya

Yukarıdaki örnek, 0xF0 maskesiyle veri baytlarının bit düzeyinde AND işlemini gerçekleştirir. NS
Kayıtların adresleri değişmez. Aslında bu filtre için bir kullanım düşünemiyorum.

srec_cat dosyada -veya 0x0F -o dış dosya

Yukarıdaki örnek, 0x0F bitleriyle veri baytlarının bit düzeyinde VEYA'sını gerçekleştirir. NS
Kayıtların adresleri değişmez. Aslında bu filtre için bir kullanım düşünemiyorum.

srec_cat dosyada -x veya 0xA5 -o dış dosya

Yukarıdaki örnek, 0xA5 bitleriyle veri baytlarının bit düzeyinde özel VEYA'sını gerçekleştirir.
Kayıtların adresleri değişmez. İçeriğini gizlemek için bunu kullanabilirsiniz.
senin EPROM'un.

srec_cat dosyada -değil -o dış dosya

Yukarıdaki örnek, veri baytlarının bit düzeyinde DEĞİL gerçekleştirir. Kayıtların adresleri
değişmemiş. Belirsizlikten kaynaklanan güvenlik?

TELİF HAKKI


srec_cat sürümü 1.58
Telif Hakkı (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009,
2010, 2011Peter Miller

The srec_cat program KESİNLİKLE HİÇBİR GARANTİ YOKTUR; ayrıntılar için 'srec_cat
-SÜRÜM Lisans' emretmek. Bu ücretsiz bir yazılımdır ve yeniden dağıtabilirsiniz.
belirli koşullar altında; ayrıntılar için 'srec_cat -SÜRÜM Lisans' emretmek.

onworks.net hizmetlerini kullanarak srec_examples'ı çevrimiçi kullanın



En yeni Linux ve Windows çevrimiçi programları